我正在使用免费和付费版本创建一个非常简单的应用程序,为此我使用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类吗?我应该怎么做呢?
答案 0 :(得分:3)
您可以对目录结构中的内容进行编码,例如:
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部分更详细地解释了这一点。
答案 1 :(得分:0)
我是否在主java类中添加了if-else语句来查看 如果它是免费的还是付费的?
是,您必须在if-else
/ activities
中添加fragments
来检查风味:
private void javaCode() {
if (BuildConfig.FLAVOR.equals("paid")) {
doIt();
else {
showOnlyInPaidAppDialog();
}
}
来源:BuildConfig