Омозона ненависти псто. Ондроеду тоже достанется.
От: landerhigh Пират  
Дата: 25.03.17 01:18
Оценка: 3 (1) +1 :)))
Я тут на досуге балуюсь прикладным андроидоведением.
Казалось бы, уже должен был привыкнуть к тому, что студия время от времени вытаскивает очередной апдейт к чему-либо, что напрочь ломает сборку, пока не проапдейтишь все остальное. Оказалось, что когда кажется (и далее по тексту).
Есть у меня один мо... один проектик, в котором задействованы страшные слова вроде Amazon AWS и иже с ними.
Еще вчера собирался.
Сегодня — перестал. Правда, сообщил, почему:

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForRelease'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/commons-io/commons-io/pom.xml
    File1: <blah>files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar
    File2: <blah>files-2.1\org.apache.commons\commons-io\1.3.2\b6dde38349ba9bb5e6ea6320531eae969985dae5\commons-io-1.3.2.jar


Любому идиоту из данного сообщения сразу станет понятно, что произошло, почему и как это исправить. Ясно как божий день, что мой проект подключает две разные версии Apache commons-io либы, и достаточно всего лишь перестать это делать.
Загвоздка в том, что напрямую я вообще не использую commons-io. А студия упорно вытаскивает две версии и пытается потом что-то с ними во время сборки делать, в процессе спотыкается на том, что обе либы хотят один и тот же файл иметь в одном и том же месте. Впрочем, мне пофигу, как оно там внутри работает, главное, что оно из-за этого обламывается.
В общем, вопрос свелся к классическому "кто виноват и что делать". Добрые люди подсказали очень полезную тулзу gradlew, которая как раз строит дерево зависимостей. Запустил я ее из директории моей аппликухи
..\gradlew dependencies

и сел читать вывод. В выводе нашлось интересное
+--- com.amazonaws:aws-android-sdk-s3:2.+ -> 2.4.0
|    +--- com.amazonaws:aws-android-sdk-core:2.4.0 (*)
|    +--- com.amazonaws:aws-android-sdk-kms:2.4.0
|    |    \--- com.amazonaws:aws-android-sdk-core:2.4.0 (*)
|    +--- org.apache.commons:commons-io:1.3.2
|    |    \--- commons-io:commons-io:1.3.2 -> 2.4
|    +--- commons-io:commons-io:2.4
|    \--- org.bouncycastle:bcprov-jdk16:1.44


В общем, то ли амазоновский сдк версии 2.4.0 умудрился включить зависимости сразу от двух версий commons-io, то ли commons-io как-то так хитро зависит сама от себя, но факт остается фактом — омозон подложил свинью.

Исправилось просто. Прибил предыдущую версию гвоздями:
build.gradle:

compile 'com.amazonaws:aws-android-sdk-core:2.+' -> compile 'com.amazonaws:aws-android-sdk-core:2.2.+'


Пользуясь случаем, передаю омозоновским мастерам пламенный превед!

Комментарии о том, что я старпер и нужно давно переходить на очередной новый сверхмодный фреймворк для сборки категорически преведствуются.
www.blinnov.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.