Android打包失败Proguard returned with error code 1. See console

来源:互联网 发布:手机淘宝店铺店招 编辑:程序博客网 时间:2024/05/18 00:32

问题:

[2013-06-28 11:12:10 - ] Proguard returned with error code 1. See console

[2013-06-28 11:12:10 - ] Note: there were 1 duplicate class definitions.

[2013-06-28 11:12:10 - ] Warning: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2: can't find superclass or interface android.os.Parcelable$ClassLoaderCreator

....

问题解决方法:

这个问题是由于代码混淆引起的,找不到引用包。

只需在你的proguard.cfg中添加如下两行即可。

-ignorewarnings
-libraryjars libs/android-support-v4.jar


你可以根据你的项目提示,添加需要的jar。


备注:

如果工程引入了Android-support-v4的jar类库,那么在工程打包混淆时,就会出现报错提示。例如提示你:You may need to specify additional library jars (using '-libraryjars')。

这里先给出解决方案,稍后我们再来解释如何处理类似情况:

在proguard.cfg里的后面,添加如下内容:

  1. -libraryjars /android-support-v4.jar  
  2. -dontwarn android.support.v4.**  
  3. -keep class android.support.v4.** { *; }  
  4. -keep public class * extends android.support.v4.**  
  5. -keep public class * extends android.app.Fragment  

然后你再打包看看,应该可以正常生成apk安装包了。

打包出错:
情况一:
 "类1 can't find referenced class 类2" 字面上的意思就是类1找不到类2的引用;它会建议你:"You may need to specify additional library jars (using '-libraryjars').";
需要使用-libraryjars加上项目中使用到的第三方库就OK了。
例如:-libraryjars /android-support-v4.jar
注意:这里引用方式是当前工程的根目录(也可以配置其他目录),也就是说,你要把第三方jar放到当前目录下,否则就会警告说找不到jar文件!

情况二:
例如: can't find superclass or interface android.os.Parcelable$ClassLoaderCreator,碰到这样的情况,可以使用-dontwarn com.xx.yy.**,不对错误提出警告。
注意:使用这个方式的话,要确保自己没有用到这个库里面的类!否则就会抛ClassNotFoundException!

情况三:
在工程中确实用到了该类,采用上面方式还是不行。这个时候就要再增加一项:-keep class com.xx.yy.** { *;},让当前类不混淆。

小结:
对于引用第三方包的情况,可以采用下面方式避免打包出错:
-libraryjars /aaa.jar
-dontwarn com.xx.yy.**
-keep class com.xx.yy.** { *;}

最后打包成功,还要在机子上跑跑,看看有没有问题。



0 0