4

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

  • 免费发布
  • 免费调试
  • 付费发布
  • 付费调试

看起来如下

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类吗?我该怎么做呢?

4

2 回答 2

4

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

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部分对此进行了更详细的解释。

于 2014-07-11T21:13:27.040 回答
2

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

if-else的,你必须添加activities/fragments来检查味道:

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

来源:BuildConfig

于 2017-09-19T08:23:32.703 回答