android - 无法让库 jar 与 Android 和 Proguard 一起使用

标签 android proguard flurry

我在 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/

相关文章:

java - JSoup 获取图像问题

android - 将简单多重选择微调器转换为自定义多重选择微调器

android - ProGuard 在我的应用程序中不起作用

c# - 如何在 Xmarin.Android 应用程序中使用 Flurry Analytics (.jar)?

java - 从重定向 URL header 获取位置

安卓 GPS : how to check if a certain point has been reached?

android - 在 Android 应用程序中禁用 3G 上的 Google Analytics 或 Flurry 报告

iphone - Flurry 没有从我的 iPhone 应用程序收集任何数据

android - 启用 proguard 时不会调用 Serialized 中的 readObject 函数

使用 GSON 库和 ProGuard 时 Android 崩溃