У меня есть проект андроида с несколькими целями построения (с использованием муравья). Для целей тестирования у всех создаваемых целей есть разные имена пакетов (поэтому мое имя пакета - com.mycompany.myapp для сборки выпуска и com.mycompany.myapp.test для сборки тестов).Объявление пространства имен Xml: имя пакета автозамена
Это работает по большей части, за исключением случаев, когда речь идет о пользовательских пространствах имен 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 файлов в скрипте сборки).
Итак, мой вопрос: есть ли способ автоматически использовать текущее имя пакета в объявлении пространства имен? Или, по крайней мере, файлы макета modife (или файлы сборки?), Так что мне не придется заменять com.mycompany.myapp при каждом изменении имени пакета.
Ссылка: http://developer.android.com/tools/sdk/eclipse-adt.html (раздел ADT 17.0.0). – Pang
"Добавлена поддержка пользовательских представлений с пользовательскими атрибутами в библиотеках. Макеты с использованием настраиваемых атрибутов должны использовать URI пространства имен http://schemas.android.com/apk/res-auto вместо URI, который включает в себя имя пакета приложения. заменяется специальным приложением в момент сборки ». – flup
Будет ли работать, даже если мой проект использует библиотеку, которая содержит пользовательские представления? –