我正在构建一个具有不同构建变体风格的应用程序。口味是“免费”和“付费”。我想在我的 java 类上创建一些逻辑,只有当应用程序是“付费”时才会触发这些逻辑。因此,我需要一种方法来在 gradle 构建过程中设置“applicationId”,如下所示:
gradle.build
productFlavors {
free {
applicationId "com.example.free"
resValue "string", "app_name", "Free App"
versionName "1.0-free"
}
paid {
applicationId "com.example.paid"
resValue "string", "app_name", "Paid App"
versionName "1.0-paid"
}
一旦我有了应用程序 ID,我就可以做这样的事情:
if(whateverpackageid.equals("paid")) {
// Do something or trigger some premium functionality.
}
我是否正确地说,在 gradle 构建过程中,一旦应用程序被编译,“applicationId”最终会变成“包名称”?如果是这样,获取“应用程序 ID”或“程序包名称”的最佳方法是什么,以便我可以在我的 Java 文件中实现一些依赖于风格的逻辑?
最佳答案
我会在您的产品变种中使用构建配置变量。类似的东西:
productFlavors {
free {
applicationId "com.example.free"
resValue "string", "app_name", "Free App"
versionName "1.0-free"
buildConfigField "boolean", "PAID_VERSION", "false"
}
paid {
applicationId "com.example.paid"
resValue "string", "app_name", "Paid App"
versionName "1.0-paid"
buildConfigField "boolean", "PAID_VERSION", "true"
}
}
然后在构建之后你可以使用:
if (BuildConfig.PAID_VERSION) {
// do paid version only stuff
}
添加属性后,您可能必须在 gradle 上执行同步/构建,然后才能编译和导入 Gradle 为您生成的 BuildConfig 类。
关于Android - 如何获取 Flavor 的 ApplicationId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32813776/