java - Android 混淆 Proguard 问题

标签 java android jackson proguard

我对 Android 的混淆很陌生,但最近几天我开始尝试 Proguard。无论如何,我被困在所谓的 Proguard hell 里了。

我的应用程序的结构是我有 3 个不同的项目。一个库和两个应用项目。这两个应用程序项目都基于库项目,其中包含应用程序的所有逻辑和库。应用程序项目中几乎没有放置任何内容。

但是,当我尝试导出启用了 Proguard 的应用程序之一时,我在 Jackson JSON 解析库中遇到了一些错误。我尝试了很多不同的事情,甚至尝试忽略这些错误,但这只会使解析部分失败。因此忽略错误并不是正确的做法。

这是我的 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').

最佳答案

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

-keep public class org.joda.time.** {public private protected *;}
-dontwarn org.joda.time.**

关于java - Android 混淆 Proguard 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13866514/

相关文章:

java - 如何制作一个也考虑元素内容的优先级队列?

java - XStream 隐式集合配置问题

java - Jackson - 使用泛型类反序列化

java - 使用 Jackson 反序列化 Json 时如何对所有值应用转换

Java 我收到错误但它仍然运行

java - 双缓冲和 libgdx

android - 为什么在我第一次打开 tabhost 的选项卡时调用 onResume?

java - 更改数字输入的基数(android)

android - 按照开发人员网站上的选项卡布局 android 示例并尝试添加第四个选项卡

json - 无法使 @JsonIdentityInfo 注释起作用