1

私の Android Studio プロジェクトには、 ABの2 つの製品フレーバーがあります。どちらも、リソース フォルダーにmy_layout.xmlという名前のレイアウトがあります。

また、フレーバー A のプロジェクトをビルドするときに、フレーバーB をビルドするときにa_my_layout.xmlおよびb_my_layout.xmlという名前のレイアウトを持つようにします。次に、ソース コードからリソース ID を動的に取得します。getResources().getIdentifier("a_my_layout", "layout"...)

エディター (Android スタジオ) で作業している間、レイアウトの名前を my_layout.xml のままにしておきます。つまり、 res/ フォルダー内のレイアウトにたくさんのプレフィックスを付けたくありません。これはGradleで可能ですか?

4

1 に答える 1

1

正直なところ、名前を変更したい理由がわかりません。リソースを動的にロードするかどうかは関係ありません。両方のフレーバーのレイアウトがある場合、それらをロードすると、あなたに固有のものをロードしますフレーバーですが、それはあなたの選択です:)。

本当に名前を変更したい場合は、名前変更スクリプトを作成し、それを事前定義されたビルド前のタスクにリンクすることでこれを実現できると思います。

このようなもの(アプリレベルのgradleで):

task renameLayoutsForVariants {
   // Do the renaming here with the prefixes
}

task renameFilesBack {
  // Rename files back to the initial name
}

afterEvaluate {
     android.applicationVariants.all { variant ->
         variant.javaCompiler.dependsOn(renameLayouts)
}

renameFilesBack.dependsOn build, deploy

gradle からリソース ファイルにアクセスするには、SO にたくさんの投稿があるので、確認するだけです。

結論として、100% 可能です。いくつかの gradle スクリプトを微調整し、Android プロジェクトをビルド/実行するときに実行される定義済みのタスクにそれらをリンクするだけです。

于 2016-06-23T10:14:03.640 に答える