0

以下のソース セットとフレーバーを使用したアプリケーションがあります。

productFlavors {
flavor1 {
    dimension "brand"
    sourceSets {
        main {
            manifest.srcFile "src/main/flavor1/AndroidManifest.xml"
            resources.srcDirs = ['src/flavor1/']

        }
    }
}

flavor2 {
    dimension "brand"
    sourceSets {
        main {
            manifest.srcFile "src/main/flavor2/AndroidManifest.xml"
            resources.srcDirs = ['src/flavor2/']

        }
    }
}
flavor3 {
    dimension "brand"
    sourceSets {
        main {
            manifest.srcFile "src/main/flavor3/AndroidManifest.xml"
            resources.srcDirs = ['src/flavor3/']

        }
    }
}

私のアプリケーションでは、99% のレイアウトとクラスが同じです。たとえばmain_activity.xml、フレーバーごとにレイアウト ファイルが異なるだけで、他の 20 ~ 30 個のレイアウト ファイルはまったく同じです。これらの 20 ~ 30 を 3 つの異なるフレーバー ソース セットでコピーしたくありません。それらを 3 つのフレーバー間で共有する方法はありますか? ファイルがソース セットに存在する場合、共有ファイルを上書きしますか? (アンドロイドがしたいのdrawabledrawble-hdpi、...)?だから持ちたくない

4

1 に答える 1

0

質問を誤解していない限り、build.gradle を次のように変更することで問題を解決できます。

productFlavors {

    flavor1 {
        dimension "brand"
    }

    flavor2 {
        dimension "brand"
    }

    //...
}

次のようにアプリモジュールを構造化します。

/src
    /main
    /flavor1
    /flavor2
   ...

そして、すべての共通ファイル (ソース、リソース) をメインに配置し、カスタム/特定のファイルをフレーバー X フォルダーに配置します。これにより、各フレーバーがビルドされるときに、メインの同じ名前のファイルが gradle によって置き換えられます。

于 2020-12-04T11:58:35.267 に答える