Xamarin.Android 百度地图jar包编译成dll文件

1.下载对应的jar包

2.开始Binding

1.建立Building工程
这里写图片描述

2.建立好后,将下载好的百度包解压:
这里写图片描述
然后拷贝到新创建好的Binding项目的jar包下:
这里写图片描述
其中的的so文件就是为不同的cup架构提供的指令集

3.修改so文件和jar包的属性值。
jar —BuildAction(生成操作)—EmbeddedJar
so —BuildAction(生成操作)—EmbeddedNativeLibrary
4.编译—会出现错误如下:
这里写图片描述
看错误列表,很明显是字段名称和雷鸣冲突了。。
解决方案:
在MetaData.xml 中加入如下字段:

<attr path="/api/package[@name='com.baidu.location']/class[@name='Address']/field[@name='address']" name="name">AddressInfo</attr>  
<attr path="/api/package[@name='com.baidu.mapapi']/class[@name='VersionInfo']/field[@name='VERSION_INFO']" name="name">VersionInformation</attr>
<attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='B']/field[@name='b']" name="name">BField</attr>
<attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='E']/field[@name='e']" name="name">EField</attr>

原因可以参考如下网址:
https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/customizing-bindings/java-bindings-metadata/

再生成编译,就成功了。
在该项目的bin/debug目录下可以找到对应的dll文件。在Xamarin.android中引用一下。正常使用就可以了。




Xamarin.Android 中使用百度地图。

1.准备好dll包。。。上面我们已经准备好了
2.在百度地图的开放平台上申请一个秘钥。
这里写图片描述
创建成功后,你会见到如下界面:
这里写图片描述
红色框里的就是你需要的秘钥—API_KEY。
3.在application中添加如下内容:

<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY" //这个不变。 
        android:value="开发者 key(步骤2中申请到的API_KEY)" />  
</application>

4.按照官网guide中的需求,添加权限
5.在布局中使用MapView

<com.baidu.mapapi.map.MapView   //小写的。和C#中的大写不一样。注意。
    android:id="@+id/bmapView"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:clickable="true" />

6.在应用的onCreate方法中初始化

public class MainActivity extends Activity {  
    MapView mMapView = null;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext  
        //注意该方法要再setContentView方法之前实现  
        SDKInitializer.initialize(getApplicationContext()); 
        //要求一定是Application类型的上下文。初始化工作
        setContentView(R.layout.activity_main);  
         //获取地图控件引用  
        mMapView = (MapView) findViewById(R.id.bmapView); 
    }  
}

注意:在SDK各功能组件使用之前都需要调用
SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中
做了如上操作后,运行,就可以看到地图的初步面容了。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页