問題描述
我有一個項目,結構如下:
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
將完全使用 main
中的源和資產,而 flavorA2
在 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
的構建變體來運行代碼.但是運行結果顯示,gradle 仍然從 main
中選擇類(classA
和 classB
),而不是使用 中的更改版本風味A2
.
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.
使用風味,您不能覆蓋類文件.因此,實現您想要的一種方法是將這些類移出 main
,并移入 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
.
所以你會有這樣的東西:
So you would have something like this:
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
|
|---flavorA/
| |---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.
這篇關于為同一類的不同版本構建風味的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!