anb*_*ber 5 android gradle android-productflavors
我有我的应用程序的几个版本:普通版,说mainapp和几个建立每个客户的具体,比如说custom1,custom2,custom3.我希望所有customX口味都有基调.
我试图这样做:
创建项目结构:
app\src\main
app\src\mainapp
app\src\commonflavor
app\src\custom3
Run Code Online (Sandbox Code Playgroud)
并配置:
productFlavors {
mainapp {
}
custom1 {
}
custom2 {
}
custom3 {
}
}
sourceSets {
custom1 {
java.srcDirs = ['src/commonflavor/java']
}
custom2 {
java.srcDirs = ['src/commonflavor/java']
}
custom3 {
java.srcDirs = ['src/commonflavor/java', 'src/custom3/java']
}
}
Run Code Online (Sandbox Code Playgroud)
在commonflavor我为所有customX风格添加常见的java类时,请说MainActivity.java和SecondActivity.java.但是custom3我需要分开SecondActivity.java.
在这种情况下,我有一个错误error: duplicate class: SecondActivity来自src/commonflavor/java和src/custom3/java.
现在我已经使用class dupllication解决了这个问题:
sourceSets {
custom1 {
java.srcDirs = ['src/commonflavor/java']
}
custom2 {
java.srcDirs = ['src/commonflavor/java']
}
custom3 {
java.srcDirs = ['src/custom3/java']
}
}
Run Code Online (Sandbox Code Playgroud)
我已经src/commonflavor/java从srcDirs 复制并复制MainActivity.java到custom3.问题是我有2个MainActivity.java文件克隆src/commonflavor/java和src/custom3/java
如何在没有代码重复的情况下解决这种情况?
我发现的最好的解决方案是在 app\src\main 中编写所有类并在需要的地方添加:
if(BuildConfig.FLAVOR.equals("mainapp")) {
// mainapp code
} else {
// coomon flavor code
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2162 次 |
| 最近记录: |