繁体   English   中英

Android-如何获取Flavor的ApplicationId

[英]Android - How To Get Flavor's ApplicationId

我正在构建具有不同构建变体口味的应用程序。 口味为“免费”和“付费”。 我想在我的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类。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM