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 次 |
最近记录: |