android - 使用 gradle 导入模块时使用模块的 packackingOptions
问题描述
我想将模块 A 包含到模块 B 中。模块 A 的 build.gradle 包含需要执行的 packackingOptions。这些 packackingOptions 在我构建模块 A 时执行。它们在我构建模块 B 时不执行,它导入模块 A。
在将模块 A 导入模块 B 时,如何确保模块 A 的 build.gradle 中的 packackingOptions 也被执行?
模块 B 的 build.gradle 如下所示:
dependencies {
implementation project(':A')
}
模块 A 的 build.gradle 如下所示:
android {
packagingOptions {
pickFirst 'assets/**'
}
}
解决方案
我设置项目结构如下:
buildscript-test-app
|
|
buildscript-test-lib
| \------------------------\
| |
buildscript-test-lib-sub-a buildscript-test-lib-sub-b
两者都lib-sub-*
包含assets/foo.txt
不同的内容。
build.gradle
的buildscript-test-lib
:
应用插件:'com.android.library'
android {
// omitted default config stuff
packagingOptions {
pickFirst 'assets/**'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':buildscript-test-lib-sub-a')
implementation project(':buildscript-test-lib-sub-b')
}
build.gradle
的buildscript-test-app
:
apply plugin: 'com.android.application'
android {
// omitted default config stuff
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':buildscript-test-lib')
}
Gradle 总是从中选择文件,buildscript-test-lib-sub-a
而不管依赖项的顺序如何(可能是因为字母顺序)。
如果这不起作用,您的构建脚本中的其他内容一定是错误的。如果它不起作用,您能否提供有关build.gradle
您的应用程序模块和库模块的更多详细信息?
也许你正在你的应用程序中覆盖pickFirsts
。如果是这种情况,你应该而不是pickFirsts = [somevalue]
做pickFirst += 'foo'
或pickFirst = 'foo'
推荐阅读
- python - HyperlinkedIdentityField 需要序列化程序上下文中的请求。添加 context={'request': request}
- bash - 在 Shell 脚本中替换读取 JSON 数据中的变量
- java - Android AlarmManager 暂停/继续
- mysql - MySql 选择用户添加的用户
- applescript - 使用 AppleScript 创建苹果笔记
- laravel - 更新类别时抛出缺少必需参数错误。我该如何解决?
- javascript - Mongoose 更新函数给出 null 而不是实际更新信息
- php - PHP CURL 显示帖子字段数组错误,而其他代码工作正常
- bash - 奇怪的东西在明确的命令
- react-native - React Native 中最新的医生命令的目的是什么