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类吗?我该怎么做呢?
您可以对目录结构中的内容进行编码,例如:
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 和依赖项部分对此进行了更详细的解释。