Xamarin Android Java 绑定:缺少 class (XMLReader)

Xamarin Android Java Binding: Missing class (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.

我的第一个想法是缺少 System.XML.XMLReader NuGet 依赖项,但没有任何意义。我添加了依赖项,但没有用。

后来,查看代码(例如android.content.Intent),我意识到在解析所需的class时不知何故出错了。它不是 System.XML .Net 框架之一,而是来自 Android 框架的 XMLReader class。

任何关于将绑定过程指向正确方向的想法,明确告诉 class 选择什么?一些 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>

可以看出 here,但解析器没有找到任何东西,即使使用不太细粒度的查询:

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. Solution Explorer 中右键单击 References
  2. Select 添加引用...
  3. Select 程序集 选项卡

你只需要System.Xml

  1. 向下滚动并在 程序集 选项卡[=54] 中找到 System.Xml =]
  2. Select它
  3. 确定按钮

相对于 Visual Studio 文件夹最常见的程序集路径:

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

如果它显示多个同名程序集,请不要担心,您可以选择其中的任何一个。不要使用 GAC 或 nuget 包。总是在 首选项管理器.

中的 Assemblies 选项卡 中始终寻找与您的项目类型相对应的程序集

在修复之后尝试构建之前,清理 项目或执行 清理构建.