Xamarin Android Java Binding: отсутствует класс (XMLReader)

Я почти всегда сталкиваюсь с некоторыми предупреждениями, когда работаю над проектом Xamarin.Android и использую библиотеку привязки Java. Я получаю следующие предупреждения:

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.

Моя первая мысль заключалась в том, что в нем отсутствует NuGet-зависимость System.XML.XMLReader, но это не имело смысла. Я добавил зависимость и не работал.

Позже просмотр кода (например, android.content.Intent), я понял, что как-то неправильно получается при разрешении требуемого класса. Это не System.XML .Net framework, а класс 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?

person webo80    schedule 17.05.2018    source источник
comment
Вы можете попробовать добавить <attr path="/api/package[@name='org.apache.http.cookie']/class[@name='CookiePathComparer']/implements[@name='java.util.Comparator']" name="name">java.util.Comparator<org.apache.http.cookie.Cookie></attr> в метаданные. моно-для-андроид.1047100.n5.nabble.com/   -  person Billy Liu - MSFT    schedule 21.05.2018
comment
@ Билли, извини, но я не могу понять, чего именно ты хочешь добиться. Может быть, изменить путь?   -  person webo80    schedule 21.05.2018


Ответы (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. Всегда ищите сборки, соответствующие типу вашего проекта, которые всегда находятся на вкладке "Сборки" в Диспетчере настроек.

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

person Eric Liu    schedule 02.06.2018