当前位置:  开发笔记 > 编程语言 > 正文

避免将jar依赖包装到aar中

如何解决《避免将jar依赖包装到aar中》经验,为你挑选了1个好方法。

我正在开发一个工作的android库,我们正在使用maven存储库中没有的一些jar.但是,我们在法律上不允许将这些罐装入我们的库中,除了我们的库之外,消费者必须自己获取这些罐子.

我的问题是,我似乎无法要求我们的库的消费者提供这些罐子(我正在使用包含aar的测试应用程序).我试过这个类似问题的解决方案无济于事.

我已经尝试将它们设置为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 repo依赖,那些工作正常.我只是希望使用该库的人必须获得并添加我们正在使用的那些罐子.
当然,有一个不太复杂的方式来指定这个?



1> Alex Meuer..:

该JAR文件必须上升一个级别,从mymodule/libs/mymodule/按照这个答案.

然后在build.gradle文件中,将:更改
compile file('libs/externalDep.jar')

provided file('externalDep.jar')

而已.
它不会被复制到aar中,使用aar的客户端必须自己提供jar文件.
使用aar的应用程序项目可以compile file('lib/externalDep')正常指定.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有