在使用 Proguard 搜索了与混淆问题相关的各种查询之后,我觉得我可能是only一个有这个特殊问题的人。因此,该帖子。
我有一个相当标准的 Android 应用程序,它使用基于 JSON 的 REST 调用来交换数据。我利用Jackson
解析 JSON 数据的库。一切都运行得非常完美,直到我们决定使用 Proguard 对我们的发布版本进行混淆。在解决了一系列与回调相关的问题之后,我终于遇到了与 Jackson 库相关的问题。
基本上,该行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
and dontshrink
旗帜。然而,结果始终是一样的。
在我尝试解决这个问题的所有时间中,我对 Proguard 库所付出的努力感到惊讶和敬畏。只是当事情不顺利时,它们就会有点混淆的.
混淆器版本 -4.6