【问题标题】:Android - How To Get Flavor's ApplicationIdAndroid - 如何获取 Flavor 的 ApplicationId
【发布时间】:2015-12-25 03:37:45
【问题描述】:

我正在构建一个具有不同构建变体风格的应用。口味是“免费”和“付费”。我想在我的 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 文件中实现一些依赖于风味的逻辑?

【问题讨论】:

    标签: android gradle android-productflavors


    【解决方案1】:

    我会在您的产品风格中使用构建配置变量。大致如下:

    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 类。

    【讨论】:

      【解决方案2】:

      我找到了获取所有值的最佳解决方案,例如 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 = "";
      }
      

      更多详情可以参考这个链接:http://blog.brainattica.com/how-to-work-with-flavours-on-android/

      【讨论】:

        猜你喜欢
        • 2018-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-21
        • 1970-01-01
        相关资源
        最近更新 更多