使用 Proguard 时使用 jackson-json 库的问题
Posted
技术标签:
【中文标题】使用 Proguard 时使用 jackson-json 库的问题【英文标题】:Problems with using jackson-json library when using Proguard 【发布时间】:2012-06-17 07:02:51 【问题描述】:我在一个 android 项目中使用 jackson-json 库,在使用 Proguard 进行混淆时导出应用程序时,出现以下错误:
Proguard returned with error code 1. See console
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry
You should check if you need to specify additional program jars.
Warning: there were 5 unresolved references to classes or interfaces.
You may need to specify additional library jars (using '-libraryjars').
java.io.IOException: Please correct the above warnings first.
at proguard.Initializer.execute(Initializer.java:321)
at proguard.ProGuard.initialize(ProGuard.java:211)
at proguard.ProGuard.execute(ProGuard.java:86)
at proguard.ProGuard.main(ProGuard.java:492)
我尝试过使用项目的设置,添加“-libraryjars”以包含其他 jar 以及许多其他内容,但没有任何帮助。
【问题讨论】:
【参考方案1】:好的,我添加了从多个网站收集的以下内容:
-libraryjars libs/jackson-annotations-2.0.0.jar
-libraryjars libs/jackson-core-2.0.0.jar
-dontskipnonpubliclibraryclassmembers
-keepattributes *Annotation*,EnclosingMethod
-keepnames class org.codehaus.jackson.** *;
-dontwarn javax.xml.**
-dontwarn javax.xml.stream.events.**
-dontwarn com.fasterxml.jackson.databind.**
连同用于 json 的每个类的下一个代码(使用 get&set),我认为正在创建 apk,但我不确定我所写的内容是否足以使其正常工作,而且如果不需要我写的一些东西:
-keep public class MyClass.**
public void set*(***);
public *** get*();
【讨论】:
我这里没有最小化命令。如果有人可以告诉我哪些行不需要,请告诉我。以上是关于使用 Proguard 时使用 jackson-json 库的问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 Proguard 时使用 jackson-json 库的问题
使用 ProGuard 和 Android 应用程序时资源重复