我对Android的整体模糊不清,但我在最后几天开始试用Proguard。无论如何,我被困在所谓的Proguard地狱。
我的应用程序的结构是我有3个不同的项目。一个库和两个应用程序项目。这两个应用程序项目都基于库项目,该项目包含应用程序的所有逻辑和库。应用程序项目几乎没有任何内容。
但是,当我尝试导出其中一个启用了Proguard的应用程序时,我在Jackson JSON Parsing库中遇到了一些错误。我尝试了很多不同的东西,我甚至试图忽略错误,但这只是让解析部分失败了。所以忽略错误不是正确的事情。
这是我的proguard-project.txt文件
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
}
-keep public class com.google.android.vending.licensing.ILicensingService
-keep class org.codehaus.** { *; }
这些是我得到的错误。
Warning: org.codehaus.jackson.map.ext.JodaSerializers$LocalDateTimeSerializer:
can't find referenced class org.joda.time.LocalDateTime
You should check if you need to specify additional program jars.
Warning: there were 99 unresolved references to classes or interfaces.
You may need to specify additional library jars (using '-libraryjars').
答案 0 :(得分:2)
尝试为joda时间类添加-keep
选项:
-keep public class org.joda.time.** {public private protected *;}
-dontwarn org.joda.time.**
答案 1 :(得分:0)
除了proguard本身,要做的一件事是确保使用Jackson 2.x,而不是1.x - 它具有较少的动态(可选)依赖项。这降低了PG的噪音。
答案 2 :(得分:0)
“找不到引用的类”意味着需要使用-libraryjars
指定包含这些类的JAR文件,这与javac
的类路径非常相似。