【xamarin.android 绑定百度地图SDK遇到的问题】智慧并不产生于学历,而是来自对于知识的终生不懈的追求。这篇文章主要讲述xamarin.android 绑定百度地图SDK遇到的问题相关的知识,希望能为你提供帮助。
在
xamarin.android 绑定项目中,绑定 百度地图的LBS地图SDK,参考
https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-a-jar/ 设置好后,编译,
然后提示错误,其中一个错误 是
文章图片
意思就是说转换 出来的CS 代码中,有重复的 类型。 理论上来说,转换的 CS 代码 是不应该出现重复代码的,有重复,意味这 jar有重复代码。
然后查看 百度地图的SDK说明 ,
文章图片
发现 对应的这里有 “不同参数的重载方法” ,所以,猜测 在转换过程中,是无法识别这种具备相同方法名的,导致一对一转出来后,在 CS 中有重复类型代码。
不过,xamarin 提供了 Metadata.xml 文件用于重写指定的方法名名称。
查找 百度的SDK (或者反便宜jar文件),上面这2个方法是位于
OnMapStatusChangeListener
接口下。反编译截图:
文章图片
定位到这个错误代码文件,然后 查找名称的 代码,有个接口
IOnMapStatusChangeListener
,下面 有 对应的上面 接口
文章图片
其实转换出来的代码,在接口这里,是没有错的, 但是
IOnMapStatusChangeListener
接口实现的代码中,
每个接口 都有一个 对于的
EventHandler ,导致出现2个
OnMapStatusChangeStartHandler
才会在编译的时候 发生错误!
既然问题找到了,那么解决方法 是?
目前找到一个方法 ,就是把 名称修改一下,
在 Metadata.xml 文件 中, path 是指 要修改的名称 的路径, 在转换出来的的 cs 文件中, 每个名称对应的路径都标注在 上面的注释中,实在是很方便,不用自己去找!
在这里,我要修改 第二个
OnMapStatusChangeStart
,即有2个参数的,修改名称为
OnMapStatusChangeStart2
< attr path="/api/package[@name=‘com.baidu.mapapi.map‘]/interface[@name=‘BaiduMap.OnMapStatusChangeListener‘]/method[@name=‘onMapStatusChangeStart‘ and count(parameter)=2 and parameter[1][@type=‘com.baidu.mapapi.map.MapStatus‘] and parameter[2][@type=‘int‘]]" name="managedName"> OnMapStatusChangeStart2< /attr>
再次执行编译,就会编译通过了。
链接: https://blog.wuliping.cn/post/note-xamarin-android-binding-baidu-lbs-sdk
推荐阅读
- 钟情平台化的锁屏赚钱APP如何重塑现象级市场()
- Android 混淆后的代码调试
- WinForm中Application.Idle事件用法
- android获取手机机型厂商deviceID基本信息
- android studio 引用aar
- android 点击,触摸事件
- Android入门之文件系统操作文件操作相关指令
- AGG第二十课 agg::ellipse 方法approximation_scale()
- 关于xamarin.forms Android创建文件与写文件 (ftp)