前面讲过,通过EmbeddedJar方式可以绑定jar包,这个在实践中已经证明没有问题了,但是绑定的过程中,可能会出现一些小错误,我在绑定讯飞语点的jar包的时候,就报了如下的错误:
Error message:
obj\Debug\generated\src\Com.
obj\Debug\generated\src\Com.
obj\Debug\generated\src\Com.
obj\Debug\generated\src\Com.
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,坚信他们能解决。