Я разрабатываю библиотеку android для работы, и мы используем некоторые банки, которые недоступны в репозиториях maven. Тем не менее, нам не разрешено юридически разрешать эти банки в нашу библиотеку, потребитель должен сам получить эти банки в дополнение к нашей библиотеке.Избегайте использования jar-зависимостей в aar
Моя проблема заключается в том, что я не могу заставить потребителя нашей библиотеки предоставить эти банки (я использую тестовое приложение, которое включает в себя aar). Я пробовал решения для this similar question безрезультатно.
Я попытался установить их provided
вместо compile
в моем Gradle файле:
// Neither of these seem to fix the problem
compile files('libs/externalDep.jar')
provided files('libs/externalDep.jar')
Я также попытался исключить их в вариантах упаковки:
packagingOptions { exclude 'libs/externalDep.jar }`
Я их можно исключить, добавив в тег android
в моих build.gradle
:
android.libraryVariants.all { variant ->
variant.outputs.each { output ->
def packageLib = output.getPackageLibrary()
packageLib.exclude('libs/externalDep.jar')
}
Они не добавляют к AAR, но построение тестового приложения дает мне:
com.android.build.api.transformTransformException:
com.android.builder.packaging.DuplicateFileException:
Duplicate files copied in APK VERSION.txt
File1: path/to/jar/in/test/app/project/externalDep.jar
File2: path/to/build/intermediates/exploded-aar/.../jars/classes.jar
Чтобы уточнить, я не обеспокоен все с зависимостями Maven репо, те работают отлично. Я просто хочу, чтобы тот, кто использует библиотеку, должен был получить и добавить те банки, которые мы используем.
Несомненно, есть менее запутанный способ указать это?