2

我对整个混淆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').
4

3 回答 3

2

尝试-keep为 joda 时间课程添加选项:

-keep public class org.joda.time.** {public private protected *;}
-dontwarn org.joda.time.**
于 2012-12-13T19:48:55.943 回答
0

“找不到引用的类”意味着需要用 指定包含这些类的 JAR 文件-libraryjars,这与在 的类路径中的工作方式非常相似javac

于 2012-12-14T07:56:41.683 回答
0

除了 proguard 本身,要做的一件事是确保您使用 Jackson 2.x,而不是 1.x——它具有较少的动态(可选)依赖项。这通过 PG 减少了噪音。

于 2012-12-14T05:29:35.303 回答