好多同学做完Android项目后,在尝试导出签名的APK程序包时遇到此错误:“Proguard returned with error code 1. See console”,按提示查看控制台,错误信息为“can't find referenced class...”,如图所示:
出现此错误提示是因为使用了Proguard代码混淆器,同时在项目中引用了第三方jar包,但却没有在Proguard的配置文件中标明引用了的jar包所致。解决方法如下:
在eclipse左侧的包资源管理器中找到proguard-project.txt,将其打开,然后在任一空行中使用-libraryjars标明所有引用了的第三方jar包。引用了的第三方jar包可以在包资源管理器中的“引用的库”(Referenced Libraries)中查看。如图所示:
注意指定引用的jar包的位置时要把路径写对。本例中引用了有米的jar包youmi-appoffer_v2.11_a_2012-02-24.jar。如果直接在-libraryjars后指定此文件名,则会出现以下错误:java.io.IOException: Can't read [D:\Android\workspace\MiaoWord\youmi-appoffer_v2.11_a_2012-02-24.jar] (No such file or directory)
的确,在D:\Android\workspace\MiaoWord文件夹中确实不存在youmi-appoffer_v2.11_a_2012-02-24.jar,因为这个文件是放在lib文件夹中的。所以应该在jar的文件名前加“/lib”。
正确设置后,导出APK包不再报错。可以看到启用Proguard和不启用Proguard导出的程序包经过反编译后看到的源代码的差别还是比较大的。
注:本次实验在以下环境中测试通过:eclipse indigo(3.7.2),Proguard 4.8,Android Development Toolkit 18.0.0,Android SDK Tools 19,Android SDK Platform-tools 11 。
出现此错误提示是因为使用了Proguard代码混淆器,同时在项目中引用了第三方jar包,但却没有在Proguard的配置文件中标明引用了的jar包所致。解决方法如下:
在eclipse左侧的包资源管理器中找到proguard-project.txt,将其打开,然后在任一空行中使用-libraryjars标明所有引用了的第三方jar包。引用了的第三方jar包可以在包资源管理器中的“引用的库”(Referenced Libraries)中查看。如图所示:
注意指定引用的jar包的位置时要把路径写对。本例中引用了有米的jar包youmi-appoffer_v2.11_a_2012-02-24.jar。如果直接在-libraryjars后指定此文件名,则会出现以下错误:java.io.IOException: Can't read [D:\Android\workspace\MiaoWord\youmi-appoffer_v2.11_a_2012-02-24.jar] (No such file or directory)
的确,在D:\Android\workspace\MiaoWord文件夹中确实不存在youmi-appoffer_v2.11_a_2012-02-24.jar,因为这个文件是放在lib文件夹中的。所以应该在jar的文件名前加“/lib”。
正确设置后,导出APK包不再报错。可以看到启用Proguard和不启用Proguard导出的程序包经过反编译后看到的源代码的差别还是比较大的。
注:本次实验在以下环境中测试通过:eclipse indigo(3.7.2),Proguard 4.8,Android Development Toolkit 18.0.0,Android SDK Tools 19,Android SDK Platform-tools 11 。