Связывание 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 ответ

Решение

Чтобы получить правильные сборки

  1. В обозревателе решений щелкните правой кнопкой мыши Ссылки.
  2. Выберите Добавить ссылки...
  3. Выберите вкладку " Сборки "

Все, что вам нужно, это System.Xml

  1. Прокрутите вниз и найдите System.Xml на вкладке Сборки
  2. Выберите это
  3. Нажмите кнопку ОК

Наиболее распространенный путь к сборке относительно папки Visual Studio:

...\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.dll

Если он показывает несколько сборок с одинаковым именем, не беспокойтесь, вы можете выбрать любую из них. Не используйте GAC или пакет nuget. Всегда ищите сборки, соответствующие типу вашего проекта, который всегда находится на вкладке "Сборки" в Preference Manager.

Прежде чем пытаться выполнить сборку после исправления, очистите проект или выполните чистую сборку.

Другие вопросы по тегам