簡體   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