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

标签 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"
    }
}

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

最佳答案

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

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

特定于一个版本或另一个版本的代码和 Assets 进入特定目录。 list 已合并。您可以使用生成到 BuildConfig.java 中的 FLAVOR 字段作为 if-else 语句的基础。

SourceSets and Dependencies Android-Gradle-Plugin 用户指南的部分对此进行了更详细的解释。

关于java - 如何修改产品口味之间的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368607/

相关文章:

java - 绘制 Canvas 中的每个像素

android - Flutter - 无法构建插件 firebase_core

android - 是否有机会更改 android 中的构建变体运行时间

android - 产品 flavor 【从eclipse迁移到android studio】

android - 当我构建多个 productFlavors 时使用 Facebook SDK INSTALL_FAILED_CONFLICTING_PROVIDER

java - 将参数传递给构造函数上的方法

java - 为 `mvn exec:java` 设置 Java 属性

java - 使用流将列表拆分为 n 大小的较小列表

java - 如何判断读取结束

java - Android MediaCodec,解码后的数据可以是原始大小的两倍吗?