android - Android:是否有任何方法可以在不同的 falvors 和 sourceset 之间共享资源?
问题描述
我有一个具有以下源集和风味的应用程序:flavorDimensions “brand”
productFlavors {
flavor1 {
dimension "brand"
sourceSets {
main {
manifest.srcFile "src/main/flavor1/AndroidManifest.xml"
resources.srcDirs = ['src/flavor1/']
}
}
}
flavor2 {
dimension "brand"
sourceSets {
main {
manifest.srcFile "src/main/flavor2/AndroidManifest.xml"
resources.srcDirs = ['src/flavor2/']
}
}
}
flavor3 {
dimension "brand"
sourceSets {
main {
manifest.srcFile "src/main/flavor3/AndroidManifest.xml"
resources.srcDirs = ['src/flavor3/']
}
}
}
我的应用程序是这样的,99% 的布局和类是相同的。例如,只有布局文件main_activity.xml
在不同风格之间有所不同,但其他 20~30 个布局文件完全相同。我不想将这 20~30 个复制到三个不同的风味源集中。有没有办法在三种风格之间共享它们,如果源集中存在文件,它会覆盖共享文件?(比如想要 android 为drawable
and做的drawble-hdpi
,...)?所以我不想拥有
解决方案
除非我误解了这个问题,否则您可以通过像这样更改 build.gradle 来解决问题:
productFlavors {
flavor1 {
dimension "brand"
}
flavor2 {
dimension "brand"
}
//...
}
并像这样构建您的应用程序模块:
/src
/main
/flavor1
/flavor2
...
并将所有公共文件(源、资源)放在 main 中,并将自定义/特定文件放在 flavorX 文件夹中,这将导致 gradle 在构建每个风味时替换 main 中的同名文件。
推荐阅读
- c - Android Gradle 插件无法识别 SourceSet“源”
- dictionary - 将 `Throwable?` 映射到 `Result
` 在 Kotlin 中 - python - 您如何将 SQLite 表读入 dask 数据帧?
- javascript - 为什么我们需要在父组件中保持状态
- r - 使用傅里叶对 xreg 和 newxreg 进行分层时间序列预测
- react-native - 使用 PanResponder React Native(版本 0.60.5)在 Tap 上将动画视图缩小到默认位置
- file - openxml将工作表添加到现有工作簿,变得损坏
- java - 如何在 Spring 事务之外执行 JPA 代码
- angular - 修改Angular Material核心功能的正确方法是什么?
- firebase-cloud-messaging - Firebase FCM 通知添加操作按钮