簡體   English   中英

在Android應用程序中獲取產品風味或構建變體

[英]Get product flavor or build variant in an android app

我有一個Android應用程序,在我的build.gradle文件中配置了許多不同的產品風格,例如

productFlavors {
    someFlavor {}
    anotherFlavor {}
}

在我的應用程序代碼中,我希望能夠獲得當前編譯的flavor(或構建變體)的名稱。 一個解決方案是:

productFlavors {
    someFlavor {
        buildConfig "public static final String PRODUCT_FLAVOR = \"someFlavor\";"
    }
    anotherFlavor {
        buildConfig "public static final String PRODUCT_FLAVOR = \"anotherFlavor\";"
    }
}

然后在我的Android應用程序中調用BuildConfig.PRODUCT_FLAVOR

有什么方法可以讓我自動做到這一點嗎? 或者是否有一些其他API在android我可以用來獲取產品風味名稱?

編輯:現在從插件版本0.7開始自動完成。 BuildConfig.java將包含

public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "f1Fa";
public static final String FLAVOR_group1 = "f1";
public static final String FLAVOR_group2 = "fa";

FLAVOR是應用了所有風味尺寸/組的組合風味名稱。 然后每個維度都可用作FLAVOR_<group name>

最后, BUILD_TYPE包含使用的構建類型的名稱。

如果您有一個風味維度,那么您只有FLAVOR常量。

這是目前唯一的方法。

你可以做的一件事是自動化它。 所以你可以這樣做:

 android { productFlavors.whenObjectAdded { flavor -> flavor.buildConfig "public static final String PRODUCT_FLAVOR = \\"${flavor.name}\\";" } // your normal config here. } 

這樣您就不必為每種風味手動執行此操作。

公認的解決方案非常棒。 對於某些情況,替代方案可能有用。

你可以添加一個配置文件,比如說'appconfig.java'到你的productFlavor特定的源文件夾,即src/<productflavor>/java/<packagename>/Appconfig.java ; 然后,您可以在您的應用程序中使用Appconfig.PRODUCT_FLAVOR 編譯器會保持誠實,並確保為所有風格添加此功能。

就像我說的,在這種特殊情況下,接受的解決方案可能更好,因為你甚至不需要為新的productFlavors添加任何東西,但這種方法可能對其他情況有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM