如何修改产品口味之间的代码
我正在使用免费和付费版本创建一个非常简单的应用程序,为此我使用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.java
的FLAVOR
字段来基于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