【发布时间】:2012-01-14 08:50:55
【问题描述】:
在使用 Proguard 搜索与混淆问题相关的各种查询后,我觉得我可能是唯一遇到此特定问题的人。因此,该帖子。
我有一个相当标准的 android 应用程序,它使用基于 JSON 的 REST 调用来交换数据。我使用 Jackson 库来解析 JSON 数据。一切都完美无缺,直到我们决定使用 Proguard 对我们的发布版本进行混淆处理。在整理了一大堆与回调相关的问题之后,我终于遇到了一个与杰克逊库相关的问题。
基本上,ObjectMapper om = new ObjectMapper() 行 - 就是行不通!我在该行不断收到以下错误:
Caused by: java.lang.ExceptionInInitializerError
at org.codehaus.jackson.map.ObjectMapper.<clinit>(Unknown Source)
... 8 more
Caused by: java.lang.NullPointerException
at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.<init>(Unknown Source)
at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.<clinit>(Unknown Source)
... 9 more
在阅读了许多与包括外部库、让 proguard 忽略 Jackson 库类、打开和关闭优化以及缩小标志相关的其他帖子之后,我现在一无所知。
为了杰克逊,我在proguard.cfg 文件中包含的各种内容 -
-dontskipnonpubliclibraryclassmembers
-dontoptimize
-dontshrink
-libraryjars xtraLibs/joda-time-1.6.2.jar;xtraLibs/xml-apis.jar;xtraLibs/jsr311-api-0.8.jar;xtraLibs/stax2-api-3.0.0.jar;xtraLibs/httpmime-4.0.1.jar
其中,我切换了dontoptimize 和dontshrink 标志。但是,结果总是一样的。
在我试图解决这个问题的所有时间里,我对 Proguard 库所付出的努力感到惊讶和敬畏。只是当事情不起作用时,它们有点混淆。
Proguard 版本 - 4.6
【问题讨论】:
标签: android obfuscation jackson proguard