web-dev-qa-db-ja.com

エラーProguardサポートされていないクラスのバージョン番号

アプリをProguardで難読化しようとすると、常にこのエラーが発生します

Error:ProGuard: [MyApp] Java.io.IOException: Can't read [C:\Program Files\Java\jdk1.8.0\jre\lib\rt.jar] (Can't process class [com/Oracle/net/Sdp$1.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7)))

私はすでにProguardを更新し、project-configファイルをチェックしましたが、常に同じエラーです。 Intellij IDEAの最新バージョンを使用しています

24
AndreaF

Proguardは実際にはJava 8をサポートしていないようです。JDKバージョン7を使用する必要があります。

編集-1

JDK 8クラスをサポートするようにProguardを再コンパイルしましたが、Java 8つの新機能をサポートしていませんが、コードでJava 8の新しい構文(eg Lambda Expression)は問題なく動作するはずです。いくつかのAndroidプロジェクトでテスト済み。

使用するには、次の場所にあるファイルproguard.jarを置き換えます。

Android-sdk\tools\proguard\ 

THIS ARCHIVE の内容で

編集-2

この問題に対処する必要がある公式のProguard 5が最近リリースされました。これは [〜#〜]こちら[〜#〜] からダウンロードできます。

26
Silverstorm

ProGuard 5.0(2014年8月にリリース)はJava 8をサポートします。

9
Eric Lafortune

ProGuardは、Java 8をサポートするようにまだ更新されていません。

ProGuardに対してすでに問題が発生しています

Eric Lafortune(ProGuard開発者)が2013年10月に書き戻しました

今は忙しいので、現実的には短期間で完了できません。ごめんなさい。しかし、私は進展に目を光らせています。

彼はまた言った

ProGuardは、ClassUtil#checkVersionNumbersを変更または無効にした場合にのみ、古い機能を使用するクラスファイルで機能する可能性があります。

2
zmarties

GithubにはProGuard5.2をサポートするpyx4meProGuard Mavenプラグインの後継があります。したがって、Java 8サポート:

https://github.com/wvengen/proguard-maven-plugin

http://wvengen.github.io/proguard-maven-plugin/

乾杯、Ekho

0
ekho