Android用Proguard混淆代码遇到的…

来源:互联网 发布:linux 单网卡双网关 编辑:程序博客网 时间:2024/04/28 04:21
http://my.oschina.net/u/936286/blog/175062

第一种问题:

Proguard returned with error code 1. See console

ProguardError 1  
Output:  
Note: there were 678 duplicate classdefinitions.  
Warning: library class android.content.res.XmlResourceParserextends or implements program classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.content.Intent depends on programclassorg.xmlpull.v1.XmlPullParser  
Warning: library class android.content.IntentFilter depends onprogram classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.content.res.ColorStateList dependson program classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.graphics.drawable.BitmapDrawabledepends on program classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.graphics.drawable.ColorDrawabledepends on program classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.graphics.drawable.Drawable dependson program classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.graphics.drawable.Drawable dependson program classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.graphics.drawable.Drawable dependson program classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.util.Xml depends on program classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.util.Xml depends on program classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.view.LayoutInflater depends onprogram classorg.xmlpull.v1.XmlPullParser  
Warning: library class android.view.LayoutInflater depends onprogram classorg.xmlpull.v1.XmlPullParser  
Warning: there were 13 instances of library classes depending onprogramclasses.  
        You must avoid suchdependencies, since the program classeswill  
        be processed, while thelibrary classes will remainunchanged.  
java.io.IOException: Please correct the above warningsfirst.  
atproguard.Initializer.execute(Initializer.java:321)  
atproguard.ProGuard.initialize(ProGuard.java:211)  
atproguard.ProGuard.execute(ProGuard.java:86)  

at proguard.ProGuard.main(ProGuard.java:492)

原因:因为工程中用了三方的解析,做混淆时没有-keep引用,就报这个错了;

解决方法:

在proguard.cfg中加入:

## kxml2-min-2.3.0.jar
-keep public class org.** {*;}这句话,就会又报一个错,如下:

第二种错误:

[2013-11-08 15:41:20 - pocketbook] Proguard returned with errorcode 1. See console
[2013-11-08 15:41:20 - pocketbook] Note: there were 678 duplicateclass definitions.
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.content.res.XmlResourceParser extends or implements programclass org.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.content.Intent depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.content.IntentFilter depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.content.res.ColorStateList depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.graphics.drawable.BitmapDrawable depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.graphics.drawable.ColorDrawable depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.graphics.drawable.Drawable depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.graphics.drawable.Drawable depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.graphics.drawable.Drawable depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.util.Xml depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.util.Xml depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.view.LayoutInflater depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: library classandroid.view.LayoutInflater depends on program classorg.xmlpull.v1.XmlPullParser
[2013-11-08 15:41:20 - pocketbook] Warning: there were 13 instancesof library classes depending on program classes.
[2013-11-08 15:41:20 - pocketbook]        You must avoid such dependencies, since theprogram classes will
[2013-11-08 15:41:20 - pocketbook]        be processed, while the library classes willremain unchanged.
[2013-11-08 15:41:20 - pocketbook] java.io.IOException: Pleasecorrect the above warnings first.
[2013-11-08 15:41:20 - pocketbook] atproguard.Initializer.execute(Initializer.java:321)
[2013-11-08 15:41:20 - pocketbook] atproguard.ProGuard.initialize(ProGuard.java:211)
[2013-11-08 15:41:20 - pocketbook] atproguard.ProGuard.execute(ProGuard.java:86)
[2013-11-08 15:41:20 - pocketbook] atproguard.ProGuard.main(ProGuard.java:492)


原因:第三方的解析和Android自带的冲突了,

解决办法:

去第三方的包中将那两个类给删掉了,就哦了;

第三:

还遇到一个小问题,我混淆时少写了一个关键字,如:-keep public class org.** {*;} 写成了-keeppublic org.** {*;}  就报了如下错误:

Proguard returned with error code 1. See console
Proguard Error 1 
Output: 
proguard.ParseException: Unexpected keyword 'org.**' in line 74 offile'E:\WorkSpace\口袋书\上线口袋书\pocketbook\proguard.cfg', 
  included from argument number2 
atproguard.ConfigurationParser.unknownAccessFlag(ConfigurationParser.java:1048) 
atproguard.ConfigurationParser.parseClassSpecificationArguments(ConfigurationParser.java:547) 
atproguard.ConfigurationParser.parseKeepClassSpecificationArguments(ConfigurationParser.java:490) 
atproguard.ConfigurationParser.parse(ConfigurationParser.java:138) 
at proguard.ProGuard.main(ProGuard.java:484)

1 0
原创粉丝点击