避免将 jar 依赖包打包成 aar
Avoid packaging jar dependencies into aar
我正在为工作开发一个 android 库,我们正在使用一些在 Maven 存储库中不可用的 jar。但是,法律不允许我们将这些 jar 打包到我们的库中,除了我们的库之外,消费者还必须自己获取这些 jar。
我的问题是我似乎无法要求我们库的使用者提供这些 jar(我正在使用包含 aar 的测试应用程序)。我尝试了 this similar question 的解决方案,但无济于事。
我已经尝试在我的 gradle 文件中将它们设置为 provided
而不是 compile
:
// Neither of these seem to fix the problem
compile files('libs/externalDep.jar')
provided files('libs/externalDep.jar')
我也试过在打包选项中排除它们:
packagingOptions { exclude 'libs/externalDep.jar }`
我可以通过将其添加到我的 build.gradle
中的 android
标签来排除它们:
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 存储库依赖项,它们工作正常。我只希望使用该库的任何人都必须获取并添加我们也在使用的那些罐子。
肯定有更简单的方法来指定它吗?
jar 文件必须向上移动一级,从 mymodule/libs/
到 mymodule/
根据 this answer。
然后在 build.gradle
文件中,更改:
compile file('libs/externalDep.jar')
至
provided file('externalDep.jar')
就是这样。
它不会被复制到 aar 中,使用 aar 的客户必须自己提供 jar 文件。
使用 aar 的应用程序项目可以正常指定 compile file('lib/externalDep')
。
我正在为工作开发一个 android 库,我们正在使用一些在 Maven 存储库中不可用的 jar。但是,法律不允许我们将这些 jar 打包到我们的库中,除了我们的库之外,消费者还必须自己获取这些 jar。
我的问题是我似乎无法要求我们库的使用者提供这些 jar(我正在使用包含 aar 的测试应用程序)。我尝试了 this similar question 的解决方案,但无济于事。
我已经尝试在我的 gradle 文件中将它们设置为 provided
而不是 compile
:
// Neither of these seem to fix the problem
compile files('libs/externalDep.jar')
provided files('libs/externalDep.jar')
我也试过在打包选项中排除它们:
packagingOptions { exclude 'libs/externalDep.jar }`
我可以通过将其添加到我的 build.gradle
中的 android
标签来排除它们:
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 存储库依赖项,它们工作正常。我只希望使用该库的任何人都必须获取并添加我们也在使用的那些罐子。
肯定有更简单的方法来指定它吗?
jar 文件必须向上移动一级,从 mymodule/libs/
到 mymodule/
根据 this answer。
然后在 build.gradle
文件中,更改:
compile file('libs/externalDep.jar')
至
provided file('externalDep.jar')
就是这样。
它不会被复制到 aar 中,使用 aar 的客户必须自己提供 jar 文件。
使用 aar 的应用程序项目可以正常指定 compile file('lib/externalDep')
。