当我尝试使用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并检查了项目配置文件,但始终是相同的错误。我正在使用最新版本的Intellij IDEA
答案 0 :(得分:26)
似乎Proguard实际上不支持Java 8。您必须使用JDK版本7。
EDIT-1
我重新编译了Proguard以支持JDK 8类,不支持Java 8新功能,但如果您的代码不使用Java 8,则新语法(例如Lambda Expression)应该没有问题。测试了一些Android项目。
使用替换
中的文件proguard.jarandroid-sdk\tools\proguard\
,内容为THIS ARCHIVE
EDIT-2
最近已经发布了官方Proguard 5应该解决的问题。您可以从HERE 下载答案 1 :(得分:9)
ProGuard 5.0(2014年8月发布)支持Java 8。
答案 2 :(得分:2)
ProGuard尚未更新以支持Java 8。
issue has already been raised against ProGuard。
Eric Lafortune(ProGuard开发人员)于2013年10月指出我现在很忙,所以现实上我无法在短期内完成这项工作,抱歉。我现在仍然关注这些发展。
他还说
如果更改或禁用ClassUtil#checkVersionNumbers,ProGuard可能适用于仅使用旧功能的类文件。
答案 3 :(得分:0)
github上有一个pyx4me ProGuard Maven插件的后续版本,支持ProGuard 5.2,因此支持Java 8:
https://github.com/wvengen/proguard-maven-plugin
http://wvengen.github.io/proguard-maven-plugin/
干杯, Ekho