У меня есть проект андроида с несколькими целями построения (используя ant). Для целей тестирования у всех создаваемых целей есть разные имена пакетов (поэтому мое имя пакета - 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 и не должны конфликтовать каждый раз, когда один человек переключает конфигурацию, и они объединяются, мне пришлось перемещать файлы макета в определенную папку конфигурации, где они выглядели бы так:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/@[email protected]" />
Теперь эти файлы хранятся в vcs, а @CONFIG.PACKAGENAME @заменяется во время предварительной сборки, а затем файл копируется из. /config/file.xml в./res/layout/file.xml.
Это крайне неудобно и не очень хорошо масштабируется (я не могу себе представить, как упоминать каждый из 50 файлов в build script).
Итак, мой вопрос: есть ли способ автоматического использования текущего имени пакета в объявлении пространства имен? Или, по крайней мере, файлы макета modife (или файлы сборки?), Так что мне не придется заменять com.mycompany.myapp при каждом изменении имени пакета.