6

私のアプリの多くのフレーバーをbuild.gradleではなくstrings.xmlファイルでより多く定義することに興味があります。複数の味を考えると、私は単純化されたリリース/デバッグバリアントを希望:既存の文字列定義を使用して 'resValue'を定義する

buildTypes { 
    release { 
     signingConfig signingConfigs.release 
     resValue "string", "app_name", "@string/prod_name" 
    } 
    debug { 
     applicationIdSuffix ".beta" 
     resValue "string", "app_name", "@string/beta_name" 
    } 

をその後、私のビルドフレーバーカスタム解像度/値/のstrings.xmlファイルのそれぞれで、私はそれぞれ独自の 『PROD_NAME』を定義すると、 "beta_name"

これは現在、gradleコマンドライン経由で細かいビルドを行いますが、Androidスタジオでは認識されません。

のAndroidメーカーエラー:

は、私は1つの文字列を別の参照方法の典型的な 'generated.xml'

<!-- Values from build type: debug --> 
<string name="app_name">@string/beta_name</string> 

以内にこれを見つけます。私はあなたがresValue DSLで@string/my_stringを解決することはできません私の経験ではアンドロイドStudioの2.1のプレビュー5

+0

「Androidスタジオで認識されない」とはどういう意味ですか? –

+0

..w.なぜ正しい文字列を正しいリソースディレクトリに入れないのですか?リリース固有の文字列の 'src/release/res/values/strings.xml'、デバッグビルドの' src/debug/res/values/strings.xml'? –

答えて

4

を使用してい

Error:(7, 29) No resource found that matches the given name 
(at 'app_name' with value '@string/beta_name'). 

:しかし、今回のAndroid Studioは、私にこのエラーが発生します。 Gradleはリソースファイル内に単純な文字列として値を入れます。あなたはそれを達成するために別のフォルダを使用することができます。この場合

だけ使用します。

src/release/res/values/strings.xml 
src/debug/res/values/strings.xml 

を使用すると、各ビルドバリアントに異なるリソースを使用したい場合(タイプ+味を構築する)ことができます

src/flavor1Release/res/values/strings.xml 
src/flavor1Debug/res/values/strings.xml 
src/flavor2Release/res/values/strings.xml 
src/flavor2Debug/res/values/strings.xml 
+0

すでに複数のフレーバーを扱っている場合はどうなりますか? "/ one/res /"、 "/ two/res"など...私はもともと "prod_name"と "beta_name"を定義しようとしていました。各フレーバのresサブディレクトリを使用すると、ディレクトリの2倍の倍数を最小限に抑えることができます。 – FishStix

+0

この場合、これらのファイルには文字列(buildtypeに異なる値を持つ)だけを追加します。 –

+0

このマニュアルでは素晴らしい例が見つかりません。どのように私は各味のためのデバッグとリリースのディレクトリを定義するつもりですか?私はすでにすべての味のために、私の主な "res"と "one/res"、 "two/res"などを持っています。 – FishStix

2

これは実際に可能です。

defaultConfig { 
    resValue "string", "prod_name", "" 
    resValue "string", "beta_name", "" 
} 
+0

これは各フレーバーのstrings.xmlファイルの定義と矛盾しませんか?フレーバーのstrings.xmlファイルは、gradleの 'defaultConfig'をオーバーライドしますか? – FishStix

+1

これは正しいです。 – steffandroid

関連する問題