xamarin 绑定高德地图SDK----1

2022-02-06  本文已影响0人  gubird

在开发过程中会遇到各种第三方原生库。这些库有jar包或者aar包。这次通过xamarin 绑定jar包的方式,将第三方库“高德地图SDK”引入到项目中。如下图


jar.jpg

将下载的jar包复制到


image.png
右键生成。当然事情不可能都是一帆风顺的,不过还好错误不是很多
image.png

通过错误提示,发现错误都是一个类型--数据类型不匹配。这样解决一个问题,其他就同理了。我们将第一个错误点击进入代码,找到实现CreateFromPacel的方法


image.png
请注意方法头部的注释,这个是关键点,这个就是java代码路径,我们将path后面的的代码复制
打开Metadata.xml,添加如下代码
<attr path="/api/package[@name='com.amap.api.maps2d']/class[@name='AMapOptionsCreator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>
image.png

注意,返回类型不匹配,需要将name的值设置‘managedReturn’ 并将attr包含的值改为需要对应的类型即可。再次生成


image.png

错误数减1.其他就同理了。
下面附上更改后的

<attr path="/api/package[@name='com.amap.api.maps2d.model']/class[@name='MyLocationStyleCreator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
  <attr path="/api/package[@name='com.amap.api.maps2d.model']/class[@name='MyLocationStyleCreator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>

  <attr path="/api/package[@name='com.amap.api.maps2d.model']/class[@name='TextOptionsCreator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
  <attr path="/api/package[@name='com.amap.api.maps2d.model']/class[@name='TextOptionsCreator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>

  <attr path="/api/package[@name='com.amap.api.maps2d']/class[@name='AMapOptionsCreator']/method[@name='newArray' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn">Java.Lang.Object[]</attr>
  <attr path="/api/package[@name='com.amap.api.maps2d']/class[@name='AMapOptionsCreator']/method[@name='createFromParcel' and count(parameter)=1 and parameter[1][@type='android.os.Parcel']]" name="managedReturn">Java.Lang.Object</attr>
  

至此大工搞成,把编译好后的dll导入你的项目,尽情玩耍吧。

上一篇下一篇

猜你喜欢

热点阅读