在android中使用proguard混淆代码出现“Conversion to Dalvik format failed with error 1”错误的解决方法

时间:2022-01-14 04:36:15
在Android2.3版本以后的开发环境中,google提供了proguard代码混淆的功能(之前可以自己添加),用来保护我们辛辛苦苦写的一点代码。

对于新建的工程,根目录上会自动添加proguard.cfg文件,用于代码混淆,无论你建的target是android的那个版本,都会自动的添加上。

在想使用代码混淆的时候,在project.properties文件中添加proguard.config=proguard.cfg一句话,来表明你想使用代码混淆,还有一些简单的使用说明在\docs\guide\developing\tools\proguard.html文件中可以找到,还有一些使用proguard的注意事项,在这里也同样可以找到。

对于旧的工程,可以把对应的proguard.cfg拷贝过去,可以实现相同的效果。

 

在今天尝试混淆的时候出现了“Conversion to Dalvik format failed with error 1”的错误,网上搜到的解决方案都不是针对代码混淆的,后来终于在*找到了问题的答案,是因为sdk tools reversion12 的问题,降到reversion11后就没有问题了,更好的解决方法也有人给出了:

找到[Android SDK Installation Directory]\tools\proguard\bin\proguard.bat文件,用编辑器打开(我用的是Editplus),将这句话:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

改为

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

就ok了。

其中我还出现了一个错误,是因为我之前在工程中添加了android-support-v4.jar,学习一下看看是否能够更好的兼容不同的版本,但是添加这个jar包之后,混淆的时候就会出现错误。有人说去掉proguard.cfg中-optimizationpasses 5这句话就可以解决,但是我现在对proguard了解的太少了,不知道每句话的具体含义,不敢删~,还是等以后研究明白之后再决定是否可以删。


原文:http://blog.csdn.net/naivesoft/article/details/6612410