Исходный код
Описание проблемы
Я пишу библиотеку Android (.aar) в той библиотеке, в которой я использую библиотеки .jar.
Во избежание дублирования зависимости я использую плагин ShadowJar для переупаковки, как показано ниже:
task shadowJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
System.out.println("Relocating packages...")
relocate 'retrofit' , 'com.codecraft.retrofit'
relocate 'org.simpleframework.xml', 'com.codecraft.org.simpleframework.xml'
relocate 'com.squareup.okhttp' , 'com.codecraft.com.squareup.okhttp'
}
В приложении, использующем библиотеку Android (.aar), я имею зависимость от приведенных ниже библиотек, просто для проверки того, что у меня нет проблем с дублированием зависимостей.
dependencies {
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta1'
}
Но когда я пытаюсь запустить приложение на Android, я получил следующую ошибку
Ошибка: предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего class Error: (com.bea.xml.stream.util.CircularQueue $1), который не поставляются с атрибутом Error: related AttlosingMethod. Этот класс вероятно, был создан компилятором Error: который не нацеливался на современный формат .class. Рекомендуемая ошибка: решение перекомпилируйте класс из источника, используя современный компилятор Ошибка: и без указания параметров типа "-target". следствие игнорирования ошибки: это предупреждение является тем, что отражающий операции над этим классом будут ошибочно. Ошибка: укажите, что это а не внутренний класс. Ошибка: проблема с обработкой "javax/xml/XMLConstants.class": ошибка: неправильное или ошибочное использование основной класс (java. * или javax. *) Ошибка: когда не строится ядро библиотека. Ошибка: это часто происходит из-за непреднамеренного включения ядра файл библиотеки Ошибка: в вашем проекте приложения при использовании среды IDE (например, Error: Eclipse). Если вы уверены, что не намеренно определение ошибки: основной класс, то это наиболее вероятное объяснение о какой ошибке: продолжайте. Ошибка: однако, вы действительно можете попробовать определить класс в ядре Ошибка: пространство имен, источник которого вы например, Ошибка: с виртуальной машины, отличной от Android проект. Это будет большая ошибка: наверняка не работает. Как минимум, это подвергает опасности ошибку: совместимость вашего приложения с будущими версиями платформы. Ошибка: также часто вызывает сомнительную законность. Ошибка: если вы действительно собираетесь создавать основную библиотеку, которая только Ошибка: соответствующий как часть создания полной виртуальной машины Ошибка: распределение, в отличие от компиляции приложения, - затем используйте Ошибка: опция "--core-library" для подавления этого сообщения об ошибке. Ошибка: если вы продолжаете использовать "--core-library", но на самом деле Ошибка: создание приложения, а затем предупредить, что ваш Ошибка приложения: в какой-то момент все равно не будет создана или запущена. Пожалуйста, будьте ошибкой: подготовлены для гневных клиентов, которые находят, например, что ваша ошибка: приложение перестает функционировать после обновления Ошибка работы: система. Вы будете виноваты в этой проблеме. Ошибка: если вы законно используете какой-либо код, который находится в Ошибка: основной пакет, тогда самая простая безопасная альтернатива у вас есть: Ошибка: переупаковка этого кода. То есть, переместите рассматриваемые классы в Ошибка: ваше собственное пространство имен пакетов. Это означает, что они никогда не будут in Error: конфликт с основными системными классами. JarJar - это инструмент, который может help Ошибка: вы в этом начинании. Если вы обнаружите, что не можете этого сделать, затем Ошибка: это указание, что путь, на котором вы находитесь, будет в конечном счете Ошибка: привести к боли, страданиям, печали и плачам. Ошибка: 1 ошибка; aborting: app: transformClassesWithDexForDebug FAILED Ошибка: выполнение выполнено для задачи ': Приложение: transformClassesWithDexForDebug'.
com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException
ОБРАТИТЕ ВНИМАНИЕ, что эта проблема не появилась в случае, если я добавляю только зависимую от модификации
dependencies {
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
}
В чем причина и как я могу решить эту ошибку?