20
4
内容纲要

前面讲过,通过EmbeddedJar方式可以绑定jar包,这个在实践中已经证明没有问题了,但是绑定的过程中,可能会出现一些小错误,我在绑定讯飞语点的jar包的时候,就报了如下的错误:

Error message:

obj\Debug\generated\src\Com.Iflytek.Speech.SpeechRecognizer.cs(8,69,8,80): error CS0234: 命名空间“Com.Iflytek.Speech”中不存在类型或命名空间名称“SpeechBaser”(是否缺少程序集引用?)

obj\Debug\generated\src\Com.Iflytek.Speech.SpeechSynthesizer.cs(8,70,8,81): error CS0234: 命名空间“Com.Iflytek.Speech”中不存在类型或命名空间名称“SpeechBaser”(是否缺少程序集引用?)

obj\Debug\generated\src\Com.Iflytek.Speech.SpeechUnderstander.cs(8,71,8,82): error CS0234: 命名空间“Com.Iflytek.Speech”中不存在类型或命名空间名称“SpeechBaser”(是否缺少程序集引用?)

obj\Debug\generated\src\Com.Iflytek.Speech.TextUnderstander.cs(8,69,8,80): error CS0234: 命名空间“Com.Iflytek.Speech”中不存在类型或命名空间名称“SpeechBaser”(是否缺少程序集引用?)

IDE Version: xamarin.studio 4.0.3

当时几乎觉得无望的时候,给xamarin公司发了邮件,过了两天,他们回复了解决办法。他们的邮件说:这是mono for android的一个bug。幸亏给了解决办法:

在创建的类库(引用了jar包的类库)的Transforms文件夹下有个Metadata.xml,在这个文件里加入:

<attr path="/api/package[@name='com.iflytek.speech']/class[@name='SpeechBaser']" name="visibility">public</attr>
<attr path="/api/package[@name='com.iflytek.speech']/interface[@name='WakeuperListener']/method[@name='onVolumeChanged']" name="argsType">OnVolumeChangedEventArgs</attr>

就可以解决问题了,我相信其他类似的jar包也可以通过这种方式解决。

这也算是我为开源做的一次贡献,发现了一个bug,挺开心的!

另外,估计xamarin公司会在下一个版本解决这个bug,坚信他们能解决。


声明: 本文采用 BY-NC-SA 协议进行授权. 未标注“转”的文章均为原创,转载请注明转自: Mono for android绑定jar包报错解决办法

公告栏

欢迎大家来到我的博客,我是dodoro,希望我的博客能给你带来帮助。