2013-06-14 11 views
12


私はアンドロイドアプリケーションを持っていますが、私は別のフレーバーを持っていたいと思います。具体的には、2つのフレーバーを持ち、それぞれのフレーバーごとに異なるストリング(異なるstrings.xmlファイル)を使用して、いくつかのアイコンが異なる場合があります。gradleを使用して異なるアプリケーションのフレーバーに異なるリソースを使用する

私はプロジェクトのルートフォルダにある2つのフォルダ作成しようとした。この結果は、以下の複数のエラーを取得し、文字列のどれもが認識されないことであるflav1flav2をし、次のbuild.gradle

android { 
    compileSdkVersion "Google Inc.:Google APIs:15" 
    buildToolsVersion "17.0.0" 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     instrumentTest.setRoot('tests') 
    } 

    productFlavors { 
     flav1 { 
      packageName "com.ic.flav1" 
     } 

     flav2 { 
      packageName "com.ic.flav2" 
     } 
    } 

    android.sourceSets.flav2 { 
     res { 
      srcDir 'flav2' 
     } 
     resources { 
      srcDir 'flav2' 
     } 
    } 
    android.sourceSets.flav1 { 
     res { 
      srcDir 'flav1' 
     } 
     resources { 
      srcDir 'flav1' 
     } 
    } 
} 

を使用タイプ:

build FAILED :

error: Error: No resource found that matches the given name (at 'contentDescription' with value '@string/txt_addr').

何か不足していますか? build.gradleはどのようにすべきですか?

おかげ

答えて

7

は解決策は、それぞれの対応する解像度フォルダの下にディレクトリ

values

を追加することで、すべての文字列が認識されました。

+0

"res"と "resources"の違いは何ですか?私は初心者から来ている初心者です...私は私のプロジェクトのフォルダを参照してくださいが、私はそれが何か、どのようにあなたは別の "資源"を各味のために持っているのか分からないのですか? –

+0

Resとリソースは同じことです。これは、ASが使用する命名規則(res)です。 フレーバーごとに異なるリソースを使用すると、同じリソースIDに対して異なるイメージを持つことができます(たとえば、R.id.logoは異なるフレーバーの異なるイメージになる可能性があります) –

関連する問題