构建口味的不同版本的同一类的 [英] Build flavors for different version of same class

查看:168
本文介绍了构建口味的不同版本的同一类的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个项目,结构是这样的:

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 有一些小的修改 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆