2015-12-03 4 views
0

Так что я пытаюсь получить приложение, чтобы запустить в работу, но я получаю эту ошибку:Как удалить файл jar в файле aar?

Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK org/snmp4j/util/doc-files/org_snmp4j_util.gif File1: /Users/Kelson/Documents/AndroidStudioProjects/aspen-android/app/libs/snmp4j.jar File2: /Users/Kelson/Documents/AndroidStudioProjects/aspen-android/app/build/intermediates/exploded-aar/libscanmanager-release/jars/libs/snmp4j.jar File3: /Users/Kelson/Documents/AndroidStudioProjects/aspen-android/app/build/intermediates/exploded-aar/devicediscoverymanager-release/jars/libs/snmp4j.jar

Я думаю, что это бросает эту ошибку, потому что snmp4j.jar уже в папке приложения ЛИЭС, но затем в libscanmanager и devicediscoverymanager aar файлы snmp4j также включены и скомпилированы снова. Я думаю, что решение заключается в удалении snmp4j из файлов aar, но я не могу понять, как это сделать. Каждый раз, когда я пытаюсь snmp4j получает перестроенный внутри aar. Вот как выглядят файлы на вкладке внешних библиотек. link to pic

То, что я думаю, что происходит в том, что каждый раз, когда его запустить его перекомпилирует snmp4j.jar из org.snmp4j внутри classes.jar, поэтому каждый раз, когда я пытаюсь удалить snmp4j.jar он просто получает заново. Как правило, удаление org.snmp4j вручную не работает. Так есть способ удалить его или остановить его от компиляции? Или мне нужно перейти к источнику libscanmanager и devicediscoverymanager и перестроить библиотеку, прежде чем использовать их в главном приложении?

Или это совершенно неправильный подход, и я пропускаю что-то действительно очевидное?

UPDATE

Так что я думаю, я нашел возможный след к решению, которое является добавление исключить команду как так

compile(name: 'devicediscoverymanager-release', ext: 'aar') { 
    exclude module: 'snmp4j' 
} 

, но я не слишком уверен в точном синтаксисе так это тоже не сработало. Я попытался исключить модуль, исключить группу с snmp4j.jar, snmp4j, org.snmp4j и т. Д. Проблема может заключаться в том, что это зависит от зависимостей, и насколько я могу судить, snmp4j не является зависимостью для библиотек, а просто в процессе постройки. Есть ли способ специально исключить банки из упаковки в apk с банками, поступающими из внешних библиотек приложения?

Update 2

Итак, в соответствии с этими ребятами: https://groups.google.com/forum/#!topic/adt-dev/g1AiJM7PeVs его фактически не возможно для меня, чтобы исключить snmp4j из файла AAR. Кажется, что библиотека должна быть перестроена, чтобы не включать snmp4j

ответ

0

я столкнулась с той же проблемой, так в build.gradle файле приложения в андроида разделе просто добавьте этот блок кода, это трюк для меня

packagingOptions { 
     exclude 'give file name which for which error is occuring' 

    } 
    for example- 

    packagingOptions { 
     exclude 'META-INF/ASL2.0' 

    } 
+0

Я попытался добавить исключение 'snmp4j.jar' и исключить 'snmp4j', но это не сработало, если у меня нет синтаксиса. –

+0

@giant_raisens, пожалуйста, убедитесь, что у вас есть правильный синтаксис и попробуйте его исключить «путь к этому файлу в банке», – Dhiraj

Смежные вопросы