Проблема Proguard при использовании библиотеки htmlunit.jar в проекте Android - PullRequest
0 голосов
/ 25 апреля 2018

Я использовал htmlunit-2.15.jar в моем проекте Android.Когда я пытаюсь создать подписанный apk, он выдает некоторые ошибки proguard

Caused by: java.io.IOException: java.lang.IllegalArgumentException: Can't find common super class of [com/gargoylesoftware/htmlunit/activex/javascript/msxml/MSXMLScriptable] (with 2 known super classes) and [java/lang/Class] (with 2 known super classes)
at com.android.build.gradle.internal.transforms.ProGuardTransform.doMinification(ProGuardTransform.java:259)

Caused by: java.lang.IllegalArgumentException: Can't find common super class of [com/gargoylesoftware/htmlunit/activex/javascript/msxml/MSXMLScriptable] (with 2 known super classes) and [java/lang/Class] (with 2 known super classes) at proguard.evaluation.value.TypedReferenceValue.findCommonClass(TypedReferenceValue.java:450)

Так что вы можете помочь мне решить эту проблему, так как мой проект запущен, мне нужно немедленно исправить и связать сборку.Проблема в программе progaurd при миграции с gradle 2.3.3 на 3.0.1 в Android Studio.

Я добавил эти 2 строки в proguard-rules.pro

-dontwarn com.gargoylesoftware.htmlunit.**
-keep class com.gargoylesoftware.htmlunit.** { *; }

-dontwarn netscape.javascript.**
-keep class netscape.javascript.** { *; }

1 Ответ

0 голосов
/ 11 июля 2018

Спасибо, я отсортировал решение и исправил его, я просто добавил библиотеку

implementation 'net.sourceforge.htmlunit:htmlunit-core-js:2.5'

в файле приложения build.gradle

В этой библиотеке есть все недостающие классы в этом htmlunit.jar. А также добавил эти 3 строки в мой файл progaurd. </p> <pre><code>-keep class com.gargoylesoftware.htmlunit.html.DomNode { *; } -keep class com.gargoylesoftware.htmlunit.javascript.SimpleScriptable { *; } -keep class net.sourceforge.htmlunit.corejs.javascript.** { *; }

Вышеуказанные изменения устранили мою проблему, и теперь я могу создать подписанный файл apk

...