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

转载于:https://www.cnblogs.com/passingwind/p/xamarin-android-binding-baidu-lbs-sdk.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值