У меня есть проект Android с несколькими целями сборки (с использованием 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, и не должны конфликтовать каждый раз, когда один человек переключает конфигурацию и они сливаются, мне пришлось переместить файлы макета в специальную папку config, где они будут иметь вид:
<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 каждый раз, когда я меняю имя пакета.