4

Gradle を使用して 2 つの異なる APK (リリースとデバッグ) を作成し、それらに異なる名前 ('appName' と 'appName debug') を使用したいと考えています。

いくつかの解決策を見つけましたが、うまくいきません:
リンク 1
リンク 2

デバイスに両方の apk をインストールしたいのですが、次のエラーが発生します。

 Duplicate resources: 
 ...\src\release\res\values\config.xml:string/config_app_name,
 ...\src\main\res\values\config.xml:string/config_app_name

config_app_nameからキーを削除するmain\res\values\config.xmlと、Gradle はキーが見つからなかったと言います。

3 つのマニフェスト ファイルがあります。

...\src\main\AndroidManifest.xml (this uses the `android:label="@string/config_app_name"`)

...\src\release\AndroidManifest.xml

...\src\debug\AndroidManifest.xml

buildTypes {

    debug {
        packageNameSuffix ".debug"
        versionNameSuffix "-debug"
        buildConfig "public static final String PROVIDER_AUTHORITY = \"" + PROVIDER_DEBUG + "\";"
        signingConfig signingConfigs.debug
    }
    release {
        buildConfig "public static final String PROVIDER_AUTHORITY = \"" + PROVIDER_RELEASE + "\";"
        signingConfig signingConfigs.release
    }
}

sourceSets {
    debug {
        java.srcDirs = [
                'src/main/java']
        res.srcDirs = [
                'src/main/res',
                'src/debug/res']
    }

    release {
        java.srcDirs = [
                'src/main/java']
        res.srcDirs = [
                'src/main/res',
                'src/release/res']
    }
}

プロジェクトの主要部分で 1 つの共通キー (文字列、整数、次元) を使用し、リリース/デバッグ部分でそれを上書きすることは可能ですか?

前もって感謝します。

4

2 に答える 2

1

ここを見てください:http://tools.android.com/tech-docs/new-build-system/resource-merging

ビルド タイプに複数のリソース ソースを定義しました。このような場合、それらは同じ優先度を持ち、競合を引き起こす可能性があります。

正しいマージが必要な場合は、別のメイン ソース セットを作成する必要があります。ビルド タイプのリソースよりも優先度が低くなります。

sourceSets {

    main {
        java.srcDirs = ['src/main/java']
        res.srcDirs = ['src/debug/res']

    }

    debug {
        res.srcDirs = ['src/debug/res']
    }

    release {
        res.srcDirs = ['src/release/res']
    }
}

しかし、そのようなディレクトリ構造では、sourceSets 定義なしですぐに機能する必要があります。

于 2016-02-25T09:05:54.053 に答える