【发布时间】:2012-10-08 20:24:07
【问题描述】:
我在 Eclipse 中有一个 Android 库项目 (A) 和 Android 应用程序 (B)。对于这个设置,我使用 Proguard,到目前为止没有问题。现在我想将 Flurry 库 (.jar) 添加到我的库项目中,它在模拟器上的调试模式下工作正常。
但是,当我想使用 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 *; }
...
但是,我仍然收到相同的错误:(
有什么我在这里想念的想法吗?
【问题讨论】:
-
如果我有自动构建,我会遇到使用 Proguard 构建的问题。我必须将其关闭以进行发布构建。可能不相关但值得尝试...
-
好吧,我最终用 Google Analytics 替换了 Flurry - 更小的 JAR 文件,Proguard 完全没有问题 :)
-
谢谢你!在将谷歌播放器服务添加为库项目后,从 Eclipse 导出 Proguard 时,我一直在与不可重复的构建失败作斗争。修复:关闭自动构建;清理所有项目;构建 google-play-services_lib(右键单击 -> 构建项目),然后通过通常的流程导出 ... 主项目以进行签名的 proguard 构建。在我关闭自动构建之前,我遇到了许多奇怪的错误——缺少类错误、不完整的 mapping.txt、没有控制台错误的错误构建 (!) 等等。