如何修改产品风格之间的代码

Spi*_*tal 5 java android android-productflavors

我正在创建一个非常简单的应用程序,具有免费和付费版本,为此我使用 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"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Bar*_*end 5

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

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
Run Code Online (Sandbox Code Playgroud)

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

Android-Gradle-Plugin 用户指南的 SourceSets 和依赖项部分对此进行了更详细的解释