我在 Eclipse 中有一个 Android 库项目 (A) 和 Android 应用程序 (B)。对于此设置,我使用的是 Proguard,到目前为止没有问题。现在我想将 Flurry 库 (.jar) 添加到我的库项目中,它在模拟器上的 Debug模式下工作正常。
但是,当我想使用 Proguard 导出我的应用程序的最终签名 apk 时,我收到许多“找不到引用的类...”警告并且无法创建 apk。
其中一些类是:
org.joda.time.LocalDateTime
org.joda.time.format.DateTimeFormatter
org.xerial.snappy.Snappy
com.jumptap.adtag.JtAdView
...
好的,所以我将以下内容添加到 proguard.cfg 文件中:
...
-dontskipnonpubliclibraryclassmembers
-libraryjars ../libproj/libs/FlurryAgent.jar
...
-keep public class com.flurry.android.FlurryAgent { *; }
-keep class com.flurry.** { *; }
-keep class org.codehaus.jackson.** { *; }
-keep class org.apache.avro.** { *; }
-keep interface com.flurry.** { *; }
-keep public class org.joda.time.** { public protected *; }
...
但是,我仍然遇到 sam 错误 :(
有什么想法我在这里遗漏了什么吗?
最佳答案
显然,flurry jar 有对其他一些库(joda-time、snappy 等)的可选引用。
为丢失的引用添加 -keep
选项根本没有帮助,因为它只会保留指定的类,但它们丢失了。相反,您应该添加适当的 -dontwarn
指令:
-dontwarn com.flurry.**
应该忽略来自 flurry 类的任何警告。
关于android - 无法让库 jar 与 Android 和 Proguard 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12788932/