构建口味的不同版本的同一类的 [英] Build flavors for different version of same class
问题描述
我有一个项目,结构是这样的:
I've got a project, structured like this:
project/
|
|---src/
|---flavorA2/
| |
| |---java/
| | |---com.abc.flavorA.mk2
| | |-----classA.java
| | |-----classB.java
| |---res/
| |---AndroidManifest.xml
|
|---main
| |---java/
| | |---com.abc.flavorA
| | |-----classA.java
| | |-----classB.java
| | |-----classC.java
| | |-----classD.java
| |---res/
| | |---drawable/
| | |---layout/
| | |---values/
| |
| |---AndroidManifest.xml
|
|---flavorA
flavorA
将使用主
完全而 flavorA2 $的来源和资产C $ C>有一些小的修改
CLASSA
和 CLASSB
和包名称也更改为 com.abc.flavorA.mk2
。
flavorA
will use the source and assets from main
completely while flavorA2
has some small changes in classA
and classB
and the package name is also changed to com.abc.flavorA.mk2
.
我有 build.gradle
文件是这样的:
...
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
flavorA2 {
packageName "com.abc.flavorA.mk2"
versionCode 2
versionName "1.0.1"
}
flavorA {
packageName "com.abc.flavorA"
}
}
...
我选择了构建变量以 flavorA2
运行code。然而,运行结果表明,摇篮仍然选择了类( CLASSA
和 CLASSB
)从而是采用了更改版本内
。 flavorA2
主
I run the code by selecting the build variant to flavorA2
. However the running results shows that the gradle still choose the classes (classA
and classB
) from main
instead of using the changed version inside flavorA2
.
我失去了一些东西呢?
推荐答案
既然你已经在2个不同的包中的类,这是完全不同的类别。因此,类不是取代对方。
Since you have the classes under 2 different packages, these are totally different classes. So the classes aren't replacing each other.
使用香精,不能覆盖类文件。因此,一种方式来完成你想要的是将这些类出主
,并进入 flavorA
。
With flavors, you can't override class files. So, one way to accomplish what you want is move these classes out of main
, and into flavorA
.
所以,你会是这样的:
project/
|
|---src/
|---flavorA2/
| |
| |---java/
| | |---com.abc
| | |-----classA.java
| | |-----classB.java
| |---res/
| |---AndroidManifest.xml
|
|---main
| |---java/
| | |---com.abc.flavorA
| | |-----classC.java
| | |-----classD.java
| |---res/
| | |---drawable/
| | |---layout/
| | |---values/
| |
| |---AndroidManifest.xml
|
|---falvorA
| |---java/
| | |---com.abc
| | |-----classA.java
| | |-----classB.java
这样一来,只要你选择一个味道,ClassA和ClassB的只有一个版本将是可见的。
This way, whenever you pick a flavor, only one version of ClassA and ClassB will be visible.
这篇关于构建口味的不同版本的同一类的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!