Android基础风格没有重复的类错误

时间:2014-11-29 09:39:15

标签: android gradle android-productflavors

我的应用程序版本很少:普通版本,比如mainapp,每个客户都有一些特定的版本,比如custom1custom2custom3。 我希望所有customX口味都有基调。

我试图这样做:

创建项目结构:

app\src\main
app\src\mainapp
app\src\commonflavor
app\src\custom3

并配置:

productFlavors {
    mainapp {
    }
    custom1 {
    }
    custom2 {
    }
    custom3 {
    }
}

sourceSets {
    custom1 {
        java.srcDirs = ['src/commonflavor/java']
    }
    custom2 {
        java.srcDirs = ['src/commonflavor/java']
    }
    custom3 {
        java.srcDirs = ['src/commonflavor/java', 'src/custom3/java']
    }
}

commonflavor中,我为所有customX风格添加了常见的java类,比如MainActivity.javaSecondActivity.java。但在custom3中,我需要单独SecondActivity.java

在这种情况下,error: duplicate class: SecondActivitysrc/commonflavor/java出现了错误src/custom3/java

现在我已经使用class dupllication解决了这个问题:

sourceSets {
    custom1 {
        java.srcDirs = ['src/commonflavor/java']
    }
    custom2 {
        java.srcDirs = ['src/commonflavor/java']
    }
    custom3 {
        java.srcDirs = ['src/custom3/java']
    }
}

我已从srcDirs复制src/commonflavor/java并将MainActivity.java复制到custom3。问题是我在MainActivity.javasrc/commonflavor/java

中有2个src/custom3/java文件的克隆

如何在没有代码重复的情况下解决这种情况?

1 个答案:

答案 0 :(得分:2)

我创建的最佳解决方案是在app \ src \ main中编写所有类,并在需要的地方添加:

if(BuildConfig.FLAVOR.equals("mainapp")) {
  // mainapp code
} else {
  // coomon flavor code
}