如何修改产品口味之间的代码

时间:2014-03-13 03:42:18

标签: java android android-productflavors

我正在使用免费和付费版本创建一个非常简单的应用程序,为此我使用Android Gradle插件中的出色productFlavors功能。我理解应该如何配置build.gradle文件并编写它,以便我的构建选项是;

  • freeRelease
  • freeDebug
  • paidRelease
  • PaidDebug

如下所示

buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.someconfig
    }
}
productFlavors {
    free {
        packageName "com.somepackagename.appfree"
    }
    paid {
        packageName "com.somepackagename.appPaid"
    }
}

基本上,我尝试做的只是限制一些功能并将AdMod添加到免费版本,我该怎么做?我是否在主java类中添加if-else语句来检查它是免费的还是付费的?或者我可以覆盖免费目录中的java类吗?我应该怎么做呢?

2 个答案:

答案 0 :(得分:3)

您可以对目录结构中的内容进行编码,例如:

src/
  main/                    # Common source and assets
    java/
    res/
    AndroidManifest.xml
  free/                    # Source and assets for the free flavour
    java/
    res/
    AndroidManifest.xml
  paid/                    # Source and assets for the paid flavour
    java/
    res/
    AndroidManifest.xml

特定于一个版本或另一个版本的代码和资产进入特定目录。清单合并。您可以使用FLAVOR中生成的BuildConfig.java字段来基于if-else语句。

Android-Gradle-Plugin用户指南的SourceSets and Dependencies部分更详细地解释了这一点。

答案 1 :(得分:0)

  

我是否在主java类中添加了if-else语句来查看   如果它是免费的还是付费的?

,您必须在if-else / activities中添加fragments来检查风味:

private void javaCode() {
    if (BuildConfig.FLAVOR.equals("paid")) {
        doIt();
    else {
        showOnlyInPaidAppDialog();
    }
}

来源:BuildConfig