16

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を含めたり、他の多くのことを試みましたが、何も役に立ちませんでした。

4

1 に答える 1

39

わかりました、私は複数のウェブサイトから集めた次のものを追加しました:

-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*();
}
于 2012-06-14T12:14:57.243 に答える