相关疑难解决方法(0)

如何从AAR依赖中排除特定资源?

模块的build.gradle文件是否有一种相当简单的方法来指示应该排除来自依赖项的某些文件?我特别想从AAR中排除某些资源.


LeakCanary是一个有趣的库,可帮助追踪内存泄漏.但是,它的无证要求compileSdkVersion是21或更高.虽然大多数项目都不应该有这个问题,但是图书馆compileSdkVersion没有充分理由要求某个项目是不合适的.开发团队可能已将其compileSdkVersion作为一般策略的一部分冻结,仅将这些设置更改为其应用程序或其他内容的主要版本更新的一部分.

在这种情况下,对于LeakCanary的v1.3.1至少,唯一的原因compileSdkVersion是AFAICT,因为AAR有一个res/values-v21/目录,包含一个继承自的主题定义Theme.Material.诊断活动使用此主题.最终用户从未见过该活动,只有debug构建中的开发人员才能看到.坦率地说,主题方面的活动看起来并不重要.迫使compileSdkVersion21只是让那个诊断活动有一个特定的主题是,恕我直言,愚蠢.

如果作为compile指令的一部分,我们可以说"嘿,请跳过res/values-v21/这个AAR,m'kay,这很好." 由于-v21主题只是提供了其他地方定义的主题的替代定义,因此删除-v21主题不会破坏构建或在运行时中断事物,而只会给我们一个Holo主题诊断活动.

我没有看到这个答案如何与依赖关系一起工作.我也不确定它是否完整,它似乎似乎没有得到支持.它也没有真正符合"简单"的条件 - 我不希望有人尝试将其放在build.gradle文件中只是为了阻止像LeakCanary这样的诊断库中的单个文件.

那么,是否有一些比这更简单的东西适用于当前版本的Android插件Gradle?

android android-gradle-plugin

30
推荐指数
2
解决办法
7866
查看次数

避免将jar依赖包装到aar中

我正在开发一个工作的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')
Run Code Online (Sandbox Code Playgroud)

我也尝试将它们排除在包装选项中:

packagingOptions { exclude 'libs/externalDep.jar }`
Run Code Online (Sandbox Code Playgroud)

我可以通过将其添加到android我的标签中来排除它们build.gradle:

android.libraryVariants.all { variant ->
variant.outputs.each { output ->
    def packageLib = output.getPackageLibrary()
    packageLib.exclude('libs/externalDep.jar')
}
Run Code Online (Sandbox Code Playgroud)

他们没有被添加到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
Run Code Online (Sandbox Code Playgroud)

为了澄清,我并不关心maven repo依赖,那些工作正常.我只是希望使用该库的人必须获得并添加我们正在使用的那些罐子.
当然,有一个不太复杂的方式来指定这个?

android jar gradle aar

0
推荐指数
1
解决办法
1824
查看次数

标签 统计

android ×2

aar ×1

android-gradle-plugin ×1

gradle ×1

jar ×1