Связывание Java Xamarin Android: отсутствует класс (XMLReader)
Я почти всегда сталкиваюсь с некоторыми предупреждениями, когда я работаю над проектом Xamarin.Android и использую Java Binding Library. Я получаю следующие предупреждения:
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method CreateFromXml in managed type Android.Content.Res.ColorStateList.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method CreateFromXml in managed type Android.Content.Res.ColorStateList.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method ParseBundleExtras in managed type Android.Content.Res.Resources.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method CreateFromXml in managed type Android.Graphics.Drawables.Drawable.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method CreateFromXml in managed type Android.Graphics.Drawables.Drawable.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method CreateFromXmlInner in managed type Android.Graphics.Drawables.Drawable.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method CreateFromXmlInner in managed type Android.Graphics.Drawables.Drawable.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method Inflate in managed type Android.Graphics.Drawables.Drawable.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method Inflate in managed type Android.Graphics.Drawables.Drawable.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type
System.Xml.XmlReader in method ParseIntent in managed type Android.Content.Intent.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type System.Xml.XmlReader in method ReadFromXml in managed type Android.Content.IntentFilter.
Моей первой мыслью было, что в ней отсутствует зависимость System.XML.XMLReader NuGet, но это не имело смысла. Я добавил зависимость, и не работал.
Позже, просмотрев код (например, android.content.Intent), я понял, что почему-то происходит ошибка при разрешении требуемого класса. Это не платформа System.XML .Net, а класс XMLReader из Android Framework.
Любая идея направить процесс связывания в правильном направлении, точно указав, какой класс выбрать? Какое-то правило metadata.xml? Спасибо
РЕДАКТИРОВАТЬ: я пытаюсь с этим:
<attr path="/api/package[@name='android.content.res']/class[@name='Resources']/method[@name='parseBundleExtras']/parameter[0]"
name="type">android.content.res.XmlResourceParser</attr>
как можно увидеть здесь, но парсер ничего не находит, даже используя менее детальный запрос:
Metadata.xml(15, 4) warning BG8A04: <attr path="/api/package[@name='android.content.res']/class[@name='Resources']"/> matched no nodes. Seems that I can't make that metadata changes in Android framework directly?
1 ответ
Чтобы получить правильные сборки
- В обозревателе решений щелкните правой кнопкой мыши Ссылки.
- Выберите Добавить ссылки...
- Выберите вкладку " Сборки "
Все, что вам нужно, это System.Xml
- Прокрутите вниз и найдите System.Xml на вкладке Сборки
- Выберите это
- Нажмите кнопку ОК
Наиболее распространенный путь к сборке относительно папки Visual Studio:
...\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.dll
Если он показывает несколько сборок с одинаковым именем, не беспокойтесь, вы можете выбрать любую из них. Не используйте GAC или пакет nuget. Всегда ищите сборки, соответствующие типу вашего проекта, который всегда находится на вкладке "Сборки" в Preference Manager.
Прежде чем пытаться выполнить сборку после исправления, очистите проект или выполните чистую сборку.