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

我正在使用免费和付费版本创建一个非常简单的应用程序,为此我使用Android Gradle插件中的出色productFlavorsfunction。 我理解应该如何配置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" } } 

基本上,我要做的就是限制一些function并将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 

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

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

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

是的 ,您必须在activities / fragments添加if-else来检查风格:

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

来源: BuildConfig