17


Android アプリケーションがあり、さまざまなフレーバーが必要です。具体的には、2 つのフレーバーを用意し、フレーバーごとに異なる文字列 (異なるstrings.xmlファイル) を使用し、いくつかのアイコンを異なるものにしたいと考えています。

プロジェクトのルート フォルダーに 2 つのフォルダーを作成しようとしましflav1flav2build.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'
        }
    }
}

この結果、どの文字列も認識されず、次のタイプの複数のエラーが発生します。

ビルドに失敗しました:

エラー: エラー: 指定された名前に一致するリソースが見つかりません ('contentDescription' で値 '@string/txt_addr')。

何か不足していますか?build.gradle はどうあるべきですか?

ありがとう

4

1 に答える 1

9

解決策は、ディレクトリを追加することでした


対応する各 res フォルダーの下で、すべての文字列が認識されました。

于 2013-06-14T09:29:20.103 に答える