Android - 如何获取 Flavor 的 ApplicationId
Android - How To Get Flavor's ApplicationId
我正在构建一个具有不同构建变体风格的应用程序。口味是 "Free" 和 "Paid"。我想在我的 java 类 上创建一些逻辑,只有当应用程序是 "Paid" 时才会触发。因此,我需要一种方法来在 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" 最终会变成 "package name",我这样说对吗?如果是这样,获得 "application ID" 或 "package name" 的最佳方法是什么,以便我可以在我的 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 上执行 sync/build,然后才能编译和导入 Gradle 代表您生成的 BuildConfig class .
我找到了获取所有值的最佳解决方案,例如 APPLICATION_ID、BUILD_TYPE、FLAVOR、VERSION_CODE 和 VERSION_NAME。
只写:Log.d("Application Id : ",BuildConfig.APPLICATION_ID);在你的代码中。它将提供 APPLICATION_ID 您的口味。
BuildConfig.java
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "";
}
更多细节你可以参考这个link:http://blog.brainattica.com/how-to-work-with-flavours-on-android/
我正在构建一个具有不同构建变体风格的应用程序。口味是 "Free" 和 "Paid"。我想在我的 java 类 上创建一些逻辑,只有当应用程序是 "Paid" 时才会触发。因此,我需要一种方法来在 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" 最终会变成 "package name",我这样说对吗?如果是这样,获得 "application ID" 或 "package name" 的最佳方法是什么,以便我可以在我的 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 上执行 sync/build,然后才能编译和导入 Gradle 代表您生成的 BuildConfig class .
我找到了获取所有值的最佳解决方案,例如 APPLICATION_ID、BUILD_TYPE、FLAVOR、VERSION_CODE 和 VERSION_NAME。
只写:Log.d("Application Id : ",BuildConfig.APPLICATION_ID);在你的代码中。它将提供 APPLICATION_ID 您的口味。
BuildConfig.java
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "";
}
更多细节你可以参考这个link:http://blog.brainattica.com/how-to-work-with-flavours-on-android/