複数のビルドターゲット(antを使用)を持つAndroidプロジェクトがあります。テストの目的で、これらのビルドターゲットはすべて異なるパッケージ名を持っています(したがって、私のパッケージ名は、リリースビルドの場合はcom.mycompany.myapp、テストビルドの場合はcom.mycompany.myapp.testです)。
これは、レイアウトファイルのカスタムxml名前空間を除いて、ほとんどの部分でうまく機能します。したがって、この:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/com.mycompany.myapp" />
パッケージ名がcom.mycompany.myapp.testに置き換えられるとすぐに機能しなくなります。
そのため、ビルド前に毎回com.mycompany.myappの値を置き換える必要があります。そして、このすべてのファイルはvcsにある必要があり、1人が構成を切り替えてマージするたびに競合しないようにする必要があるため、レイアウトファイルを特定の構成フォルダーに移動する必要がありました。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/@CONFIG.PACKAGENAME@" />
これで、このファイルはvcsに保存され、事前構築中に@ CONFIG.PACKAGENAME @が置き換えられ、ファイルが./config/file.xmlから./res/layout/file.xmlにコピーされます。
これは非常に不便であり、実際にはうまく拡張できません(ビルドスクリプトで50個のファイルのすべてに言及することは想像できません)。
だから私の質問は:名前空間宣言で現在のパッケージ名を自動的に使用する方法はありますか?または、少なくともレイアウトファイル(またはビルドファイル?)を変更して、パッケージ名を変更するたびにcom.mycompany.myappを置き換える必要がないようにします。