android - Gradle:如何让产品口味从 src/main 继承,除了一个

标签 android inheritance gradle android-productflavors

我想为我的 Android 应用程序使用产品风格,因为这似乎是一个很大的优势。 但是有一件事我没有解决:

比方说,我有一个项目 Planets com.example.planets 我想为每个星球构建一个应用程序:

productFlavors {
    mercury {
        applicationId "com.example.planets.mercury"
    }
    venus {
        applicationId "com.example.planets.venus"
    }
    ...
}

很多代码是共享的,因此放在 src/main 文件夹中。

我还想在每个应用程序中使用相同的MainActivity地球应用程序除外,因为它在这个应用程序中有所不同。如果不在每个其他文件夹中复制非地球版本,我如何才能实现这一点?

我试图“覆盖”上面提到的 MainActivity 文件夹,但没有成功。

提前致谢!

最佳答案

我会建议这样的文件结构

    .
└── src
    ├── earth
    │   └── java
    │       └── com
    │           └── example
    │               └── app
    │                   ├── MainActivity.java // extends Activity + your code
    │                   └── SomeClass.java
    ├── main
    │   └── java
    │       └── com
    │           └── example
    │               └── app
    │                   ├── MainBaseActivity.java // extends Activity + your code
    │                   └── SomeClass.java
    ├── mercury
    │   └── java
    │       └── com
    │           └── example
    │               └── app
    │                   ├── MainActivity.java // extends MainBaseActivity + empty body
    │                   └── SomeClass.java
    └── venus
        └── java
            └── com
                └── example
                    └── app
    │                   ├── MainActivity.java // extends MainBaseActivity + empty body
    │                   └── SomeClass.java

其中 SomeClass.java 代表您所有的常用类和代码 mercury 和 venus 将使用来自“main”的 MainActivity,而 earth 有它自己指定的。

关于android - Gradle:如何让产品口味从 src/main 继承,除了一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587699/

相关文章:

android - 正在发送多个改造调用,但有些从未收到响应或错误

android - 错误消息 : This Android SDK requires Android Developer Toolkit version 22. 6.1 或更高版本

java - 迁移到 Hibernate 4、@Inheritance 和 @GenerateValue 的误解

variables - 试图了解如何将参数从 gradle 传递到我的 shell 脚本?

gradle - 使用gradle定义生成器代码位置以构建xtext和xtend

android - 针对不同设备缩放 Android Canvas 2D 图形

Android ndk-build 忽略 APP_ABI := x86

c++ - 派生类 C++

java - 如何在 Java 中实现具有继承性的 Fluent Builder

android - 从android gradle插件生成eclipse项目