2013-07-31 2 views
35

Androidアプリでの変異体を構築し、私ができるようにしたいです現在コンパイルされているフレーバー(またはビルドバリアント)の名前を取得します。 1つの解決策は次のとおりです。製品の風味を取得または私は自分のアプリケーションのコードでは、私のbuild.gradleファイルなど</p> <pre><code>productFlavors { someFlavor {} anotherFlavor {} } </code></pre> <p>で構成された異なる製品フレーバーの数でAndroidアプリを持っている

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

そして、私のアンドロイドアプリコールBuildConfig.PRODUCT_FLAVORにあります。

これを自動的に行うためにgradleを得る方法はありますか?または、私は製品のフレーバー名を取得するために使用できるアンドロイドにいくつかの他のAPIがありますか?

答えて

53

編集:これはプラグインのバージョン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には、使用されているビルドタイプの名前が含まれています。

フレーバーディメンションが1つの場合、定数はFLAVORです。

これはこれを実行する唯一の方法です。

あなたができることは、自動化することです。だからあなたは次のようなことをすることができます:

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

    // your normal config here. 
} 

この方法では、味ごとに手動で行う必要はありません。

+0

これはまさに私が欲しかったことです - ありがとう。 whenAddedの代わりにwhenObjectAddedを使用する必要があることが分かったので、私はあなたの答えを編集しましたが、基本的にこれは正しいです。 – robd

+1

あなたの答えを更新してくれてありがとう - 便利です! – robd

+0

build.gradleで選択されたビルドバリアントを取得したいが、whenObjectAddedが私のために働いていない。 アンドロイド{ productFlavors { flavor1 {} \t \t flavor2 {}} productFlavorsを:ここ は私がやっているものです。whenObjectAdded {味 - > のprintln 'オブジェクトを追加しました:' +味 } buildTypes { デバッグ{} リリース{}} } – userv

6

解決策は素晴らしいです。いくつかのケースでは、代替が役に立つかもしれません。

「Appconfig.java」などの設定ファイルを商品に追加できます.Flavor固有のソースフォルダ(src/<productflavor>/java/<packagename>/Appconfig.java)。アプリ内でAppconfig.PRODUCT_FLAVORを使用することができます。コンパイラはあなたの正直さを保ち、すべての味のためにこれを追加します。

私は、この特定のケースでは、新しいproductFlavorsに何も追加する必要さえないので、おそらく許容される解決策が優れていると言えますが、このアプローチは他の場合に役立つ可能性があります。

関連する問題

 関連する問題