带有口味和包装名称的 Douts

Douts with flavors and packages names

我的应用程序中有两个 Flavors,所以我的项目具有以下结构:

productFlavors {
            green {
                resValue "string", "app_name", "green"
                minSdkVersion 14
                applicationId 'com.company.green'
                targetSdkVersion 22
                versionCode 3
                versionName '3.0.3'
            }

            red {
                resValue "string", "app_name", "red"
                minSdkVersion 14
                applicationId 'com.company.red'
                targetSdkVersion 22
                versionCode 3
                versionName '3.0.3'
                 }
             }          

此外,我在主包中的每个 Flavor 和公共 class 中都有不同的 class 实现。
现在假设我必须执行 class:

MyClass

class 对每种口味都有不同的实现,所以我在绿色和红色 Flavor

内部实现 class

在绿色 MyClass 上创建 MyClass 之后,我遇到了这个错误 在 class 本身。

package name com.company.MyClass does not correspond to the file path

我也试过

package com.company.green.MyClass

但是我得到相同的包名错误

所以我的问题是: 每个 Flavor 的正确包名是什么?

文件 MyClass.java 应位于 2 个位置: <project>/<module>/src/green/java/com/company/MyClass.java <project>/<module>/src/red/java/com/company/MyClass.java

应该有package com.company,
所以 applicationId 中设置的 flavor 不会影响 类.

的包名称和位置

然后您可以在项目的任何地方执行 import com.company.MyClass 并且将采用 MyClass 的适当版本。

有关详细信息,请查看此 gist