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

时间:2018-05-17 09:41:41

标签: xamarin xamarin.android xamarin-binding java-binding

当我使用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),我意识到在解析所需的类时,它会出错。它不是System.XML .Net框架,而是来自Android Framework的XMLReader类。

任何关于将绑定过程指向正确方向的想法,明确地说明要选择什么类?一些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 个答案:

答案 0 :(得分:3)

获得正确的装配

  1. Solution Explorer 中,右键单击 参考
  2. 选择 添加引用...
  3. 选择 程序集 标签
  4. 您只需要 System.Xml

    1. 向下滚动,在程序集标签中找到 System.Xml
    2. 选择它
    3. 确定 按钮
    4. 相对于Visual Studio文件夹的程序集的最常见路径:

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

      如果它显示多个具有相同名称的程序集,请不要担心,您可以选择其中任何一个。不要使用GAC或nuget包。始终查找与您的项目类型相对应的程序集,该项目类型始终位于首选项管理器中的程序集选项卡

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