2016-12-16 5 views
2

ビルドバリアント/ビルドタイプに応じてstring.xmlの異なる文字列に値を割り当てたいとします。私はこのようなものを想像:ビルドバリアントで可変されるstring.xmlの値

res/values-debug/string.xml 
    <string name="my_string">some debug value</string> 

res/values-release/string.xml 
    <string name="my_string">some release value</string> 

を私はそこにこのようなものを見ません。 これは可能ですか?あなたのbuild.gradleファイルを経由して

+0

これは、buildTypeではなくbuildVariantを使用するとはるかに簡単です。あなたの例では、 'buildType'が使用されています –

+0

興味深いことに、このページの回答はビルドタイプであり、ビルドバリエーションではありません。 – L7ColWinters

+0

buildVariantの使い方は? –

答えて

2

はい、可能です!あなたはこのような何かを追加することができ、あなたのbuild.gradleで

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     signingConfig signingConfigs.release 
    } 
    debug { 
     applicationIdSuffix ".debug" 
     minifyEnabled false 
     debuggable true 
     signingConfig signingConfigs.release 
    } 
} 

は、その後、あなたのプロジェクトであなたのsrcフォルダにあなたがメインという名前のフォルダを持っている必要があり、その横に1がdebugと呼ばれる追加します。あなたのデバッグフレーバーを構築している限り、デバッグフォルダー内のリソースはすべて、リリースフォルダーであるメインのリソースに置き換わります。

は次のようになります。

src/ 
    main/ 
     java/ -- all your java code 
     res/ 
      ... 
      values/ 
       strings.xml 
    debug/ 
     res/ 
      ... 
      values/ 
       strings.xml 

EDIT:2つの他の回答からのアプローチは罰金としてうまく機能します。しかし、文字列をたくさん持っていれば、XMLを扱いやすくすることができます。

+1

このアプローチを使用したいのですが、ミップマップフォルダを追加できるためです。私はそれを動作させることはできません。私はあなたに私が何をしているかを示すために質問に追加しました。私が間違っていることを見ることができますか? –

+1

私はそれを今得ました。私はディレクトリ構造が正しくありませんでした。 –

+1

私はこのように嬉しいです!私は、2つのアプリケーションを区別することができ、アイコン、名前、URLなどでデバッグしてリリースすることが非常に便利であることがわかります。このアプローチは最良の方法です。 :) –

2
resValue 'string', '<string_name>', "some string" 

異なるビルドバリアント/製品の味のためにあなたのbuild.gradleに異なるものを定義

4

ことが可能

buildTypes { 
    release { 
     resValue "string", "my_string", "some release value" 
    } 
    debug { 
     resValue "string", "my_string", "some debug value" 
    } 
} 

次に、あなただけの@string/my_stringのように、この値を使用することができますあなたが望むところ

+0

そして、strings.xmlのエントリを削除しますか? –

+0

@AlLelopathはい、これをフォームxmlから削除できます –

関連する問題