0

アプリケーションを dexguard した後、アプリケーションの実行時にこのエラーが発生しました

01-01 04:47:02.948: E/AndroidRuntime(8125): FATAL EXCEPTION: Thread-9
01-01 04:47:02.948: E/AndroidRuntime(8125): java.lang.NoSuchMethodError: javax.xml.parsers.DocumentBuilder.setEntityResolver
01-01 04:47:02.948: E/AndroidRuntime(8125):     at o.郋.櫯(:134)
01-01 04:47:02.948: E/AndroidRuntime(8125):     at o.郋.鷭(:82)
01-01 04:47:02.948: E/AndroidRuntime(8125):     at android.SHAREDLIBS.network.ISOManager.LoadISOXMLMessageFactory(:637)
01-01 04:47:02.948: E/AndroidRuntime(8125):     at o.Ț.run(:294)

問題ありません。そのクラスを難読化から除外するだけです。しかし、dexguard-project.txt ファイルに何を含めようとしても問題ありません。エラーが発生し続けます。

私が試したいくつかのこと

  • -keep public class javax.xml.parsers.**
  • -keep public class javax.xml.parsers.DocumentBuilder
  • -keep public abstract class javax.xml.parsers.DocumentBuilder
  • -keep class javax.xml.parsers.DocumentBuilder.** { *; }
  • -keep public abstract class javax.xml.parsers.DocumentBuilder.** { *; }
  • -keep public class javax.xml.parsers.** { *; }
  • -keep public class javax.xml.parsers.DocumentBuilder.** {public private protected *;}
  • -keepclassmembers class javax.xml.parsers.DocumentBuilder { public abstract void setEntityResolver (org.xml.sax.EntityResolver); }
  • -keepclassmembers public abstract class javax.xml.parsers.DocumentBuilder { public abstract void setEntityResolver (org.xml.sax.EntityResolver); }

次のフラグで実行しています。

-dontshrink
-dontoptimize

したがって、明らかに問題は難読化のステップにあります。

はい、難読化を無効にすると、問題なく動作します。

明示的に除外するように要求した後でも、エラーが発生し続けるため、明らかに何か間違っています。

正しく除外していますか?他に間違っているように見えるものはありますか?

4

2 に答える 2

2

ANoSuchMethodExceptionは反射の失敗が原因です。その方法を維持することが役に立ちます。ANoSuchMethodErrorは、リンクの問題が原因です。この場合、コードには Android ランタイムのメソッドが必要です。互換性のないライブラリを使用していることが原因である可能性があります。ProGuard または DexGuard のコンソール ログには、いくつかのヒントが含まれている場合があります。

構成、ビルド ログ、失敗した apk を saikoa.com にメールしていただければ、調べます。

(私は ProGuard と DexGuard の作成者です)

于 2013-10-11T22:14:23.523 に答える