После dexguarding моего заявления я получил эту ошибку, когда не работают мое приложениеИсключая класс по NoSuchMethodError не работает 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
Очевидно, проблема заключается в стадии обфускации.
И да, если я отключу обфускацию, он работает без каких-либо проблем.
Я, очевидно, делаю что-то неправильно, потому что даже после того, как я явно просил исключить его, я все равно продолжаю получать ошибку.
Я исключаю его правильно? Есть ли другая вещь, которая выглядит неправильно?
Привет Эрик, я, к сожалению, не сможет отправить вам APK, потому что я не имею на это разрешение. Я понимаю, что без него вы не сможете дать мне солидный ответ. В любом случае, можете ли вы сказать, правильно ли я исключаю класс в файле конфигурации? –
-keep параметры не помогут, потому что обработанный код ищет метод в среде выполнения Android, на который не влияет обработка. Вы должны проверить вывод консоли в процессе сборки. Любые фрагменты информации, которые вы можете отправить мне, могут помочь. Мы также можем убедиться, что у вас есть последнее обновление DexGuard. –