Проблема Proguard при использовании библиотеки htmlunit.jar в проекте Android

Я использовал 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)

Не могли бы вы помочь мне решить эту проблему, поскольку мой проект находится в стадии разработки, мне нужно немедленно исправить и выпустить сборку. Проблема в прогаурде при переходе с gradle 2.3.3 на 3.0.1 в студии android.

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

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

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

Вы проверяли эту ссылку ?? [1]: stackoverflow.com/questions/43571266/…

Codelover 25.04.2018 08:06

Yaah проверил, это не решило мою проблему

gdinesh029 25.04.2018 08:15

Добавьте этот код в свою зависимость, он сработал для меня. конфигурации {все группы * .exclude: 'com.android.support', модуль: 'support-v13'}

Codelover 25.04.2018 08:18

Codelover, можете ли вы прояснить это?

gdinesh029 25.04.2018 08:26

Думаю, ваша ошибка возникает из-за файла jar. добавьте этот фрагмент кода в свою зависимость, которая находится в файле Build.gradle приложения. конфигурации {все группы * .exclude: 'com.android.support', модуль: 'support-v13'}

Codelover 25.04.2018 08:29

Мой файл jar не содержит ничего, связанного с com.android.support & support-v13

gdinesh029 25.04.2018 08:33

опубликуйте свою зависимость

Codelover 25.04.2018 08:34

зависимости {реализация fileTree (include: ['* .jar'], dir: 'libs') реализация 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint: constraint-layout : 1.0.2 'реализация' com.android.support:design:27.1.1 'реализация' com.android.support:support-v4:27.1.1 'testImplementation' junit: junit: 4.12 'androidTestImplementation' com.android.support .test: runner: 1.0.1 'androidTestImplementation' com.android.support.test.espresso: espresso-core: 3.0.1 'файлы реализации (' libs / htmlunit-2.30.jar ')}

gdinesh029 25.04.2018 08:36
sourceforge.net/projects/htmlunit/files/htmlunit/2.15/… В этом zip-файле мы найдем библиотеку htmlunit-2.15.jar
gdinesh029 25.04.2018 08:39

Codelover, я внес изменения, это мне не помогло

gdinesh029 26.04.2018 07:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
10
163
1

Ответы 1

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

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

в файле app build.gradle

В этой библиотеке есть все недостающие классы в этом htmlunit.jar. А еще добавил эти 3 строчки в свой progaurd файл.

-keep class com.gargoylesoftware.htmlunit.html.DomNode { *; }
-keep class com.gargoylesoftware.htmlunit.javascript.SimpleScriptable { *; }
-keep class net.sourceforge.htmlunit.corejs.javascript.** { *; }

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

Другие вопросы по теме