我想为我的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代表您所有常见的类和代码
Mercurial 和金星将使用“main”中的MainActivity,而地球有自己的指定。

09-04 15:08