У меня есть элемент управления пользовательскими настройками, для которого я определил несколько атрибутов в values/attrs.xml. Просто чтобы сфокусировать разговор, вот пример атрибутов, которые можно найти в values/attrs.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyCustomView">
<attr name="android:text"/>
<attr name="android:textColor"/>
<attr name="extraInformation" format="string" />
</declare-styleable>
</resources>
Чтобы использовать атрибуты, вы используете тег xmlns там, где вы хотите его использовать, и он выглядит примерно так:
xmlns:custom="http://schemas.android.com/apk/res/com.conundrum.app.lib"
В этом и заключается проблема: определение xmlns ссылается на имя пакета БИБЛИОТЕКИ, и этот ресурс отлично компилируется в проекте БИБЛИОТЕКИ. Однако проект Android, включающий проект библиотеки, имеет другое имя пакета, и Android пытается объединить все ресурсы. Когда дело доходит до этого определения xmlns, оно отказывается, потому что имя пакета во включающем проекте Android отличается.
У кого-нибудь есть идеи по использованию ссылок xmlns в проектах библиотеки, которые все еще действительны, включая проекты Android?
Были ли declare-styleables просто недосмотром команды Android, когда они рассматривали библиотеки?