我想使用Proguard主要是出于混淆的原因。
我的问题是我有三个库,Twitter4J和两个路标库。当我尝试创建签名的APK时,这些库会导致错误。为了解决这个问题,我将以下内容放在proguard.config
文件中......
-dontwarn org.apache.commons.codec.binary.**
-dontwarn org.slf4j.**
-dontwarn com.sun.syndication.io.**
-dontwarn com.sun.syndication.feed.synd.*
虽然这摆脱了控制台中的错误,当我将已签名的APK加载到我的手机上时,它立即崩溃了。 DDMS说这是由于Twitter4J中没有找到的课程。
摆脱上面的"dontwarns"
没有帮助。也没有添加dontshrink dontoptimise
。
我希望Proguard完全忽略这些库(因为它们无论如何都是开源的)。这可能吗?
答案 0 :(得分:57)
试试这个:
-keep class javax.** { *; }
-keep class org.** { *; }
-keep class twitter4j.** { *; }
来自@CaspNZ的Cf帖子: Android Proguard with external jar
答案 1 :(得分:10)
您应该能够在proguard.cfg中添加以下行以排除包(和子包)中的所有类
-keep class org.apache.commons.codec.binary.**
-keep interface org.apache.commons.codec.binary.**
-keep enum org.apache.commons.codec.binary.**
-keep class org.slf4j.**
-keep interface org.slf4j.**
-keep enum org.slf4j.**
-keep class com.sun.syndication.io.**
-keep interface com.sun.syndication.io.**
-keep enum com.sun.syndication.io.**
-keep class com.sun.syndication.feed.synd.**
-keep interface com.sun.syndication.feed.synd.**
-keep enum com.sun.syndication.feed.synd.**
答案 2 :(得分:0)
我想补充一点,您应该在添加proguard规则后将项目与Gradle文件同步,否则它们可能无法正常工作。