基于JDK1.8,Android Proguard失败
1、开发环境
Win10/Mac、Maven v3.2.3、AndroidSDK v23.1
2、pom.xml部分内容
<plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.8.2</version>
<configuration>
<!-- 使用签名时一定加上该字段,否则签名失败 -->
<sign>
<debug>false</debug>
</sign>
<sdk>
<platform>${platform.versionCode}</platform>
</sdk>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
<proguard>
<skip>false</skip><config>${project.basedir}/proguard.txt</config>
</proguard>
</configuration>
<extensions>true</extensions>
<inherited>true</inherited>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<fork>true</fork>
<meminitial>512m</meminitial>
<maxmem>1048m</maxmem>
</configuration>
</plugin>
3、问题表现
执行mvn install命令,报
[INFO] java.io.IOException: Can't read [D:\Program Files\Java\jdk1.8.0_91\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)))
4、分析问题
原本使用JDK1.7没有出这问题,是安装JDK1.8后才出错。那么就将maven-compiler-plugin的编译设置为1.7模式。问题还是没法解决。
如果屏蔽代码混淆的脚本,可以install成功。
<proguard>
<skip>false</skip> <config>${project.basedir}/proguard.txt</config>
</proguard>
那么问题是proguard版本只支持到java7,而我使用的是java8.
5、解决办法
下载最新proguard(支持java 8的版本),然后将下载的文件解压。将andorid sdk/tools/proguard/lib中的jar包,替换为刚下载解压文件中的lib包。【问题解决】
proguard包的下载地址:http://proguard.sourceforge.net/
如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!