2016-04-27 5 views
0

内の別の場所にbuild.gradleに定義されている:私は何をしたいか使用buildConfigFieldは私のbuild.gradleのコードの次のチャンクを持ってbuild.gradle

productFlavors { 
     //DIMENSION - APP 
     slid { 
      dimension "app" 
      applicationId "com.slid" 
      versionCode 1 
      versionName "1.0.0" 

      manifestPlaceholders = [one_app_id : "273e0-b8f-4c7f-87-0f4eb68da"] 
     } 
} 

は、アクセスone_app_idあるmanifestPlaceholdersから私のJavaの内部でコード。

私はそうすることができませんでした(あるいは、少なくとも私は道を見つけることができませんでした)として、私は同じ値273e0-b8f-4c7f-87-0f4eb68dabuildConfigFieldStringを定義したいが、私はそれmanifestPlaceholders/one_app_idを参照したいと思いますので、私IDを2回書き込まないでください。

質問: buildConfigField "String", "ONE__ID", '[reference_here]' [reference_here]の代わりに何を設定しますか?

OR

どのように私は他の方法は、すなわち、IDがbuildConfigFieldとして設定し、例えばmanifestPlaceholdermanifestPlaceholders = [one_app_id: [?!reference_here?!]]

P.S.をその参照を設定している行うことができますはIDが有効でない、心配しないでください:)

+1

は、「私は[reference_here]何を設定する代わりにしますか?」 - 'FOO'は' gradle.properties'や単純なグローバル変数のように 'FOO'をどこかに定義すると動作します。 – CommonsWare

+0

ええ、gradle.propertiesソリューションが見つかりましたが、ID値がbuild.gradleに表示され、別の場所には表示されません。私はフレーバーを使用し、このプロジェクトは新しいフレーバーが必要なときに簡単に新しいデータを書き込む必要があります(第三者がこれらの値を記入して新しいビルドを生成するので、残念ながらストレートにする必要があります: – AndreiBogdan

+0

"私はID値をbuild.gradleに表示したい" - グローバル定数を使用する:http://stackoverflow.com/a/4859715/115145 – CommonsWare

答えて

0

CommonsWareの提案に基づいて、私はそうのようにそれを行うことができた:

ext { 
    oneAppId = "" 
} 

android { 

    productFlavors { 
      //DIMENSION - APP 
      slid { 
       dimension "app" 
       applicationId "com.slid" 
       versionCode 1 
       versionName "1.0.0" 

       ext.oneAppId = '"273e0-8567-558da"' 
       manifestPlaceholders = [one_app_id : ext.oneAppId] //Used by the third party library 
       buildConfigField "String", "ONE_APPID", ext.oneAppId //I'll use this in java 
      } 
    } 

} 
関連する問題