Объявление пространства имен Xml :auto -замена имени пакета

У меня есть проект 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 каждый раз, когда я меняю имя пакета.

47
задан Valery Viktorovsky 18 September 2015 в 09:35
поделиться