xmarin.android for vs2015使用百度地图api3.6.1

首先新建一个binding Library项目,项目名随意,我这里起名Bmap

然后将jar文件放入jars目录下,生成属性改为EmbeddedJar

这时候如果生成dll文件会失败,提示有几类的子项不能喝类名相同

解决方案是在metadate下添加几个属性

  <attr path="/api/package[@name='com.baidu.mapapi']/class[@name='VersionInfo']/field[@name='VERSION_INFO']" name="name">VersionInfos</attr>
  <attr path="/api/package[@name='com.baidu.location']/class[@name='Address']/field[@name='address']" name="name">address2</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='A']/field[@name='a']" name="name">As</attr>
  <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='B']/field[@name='b']" name="name">Bs</attr>

属性中的 As,Bs是随便输入都可以,但是name=属性不能改,path属性是报错提示信息处拷贝出来的,报错效果如下

解决完这种错误后,就可以生成dll,生成成功后,在android项目中引用项目或者dll,

这时候我们在android项目下添加百度地图的可以

代码如下

[assembly:MetaData("com.baidu.lbsapi.API_KEY", Value = "你的百度地图key")]

如图效果

百度地图的key申请地址http://lbsyun.baidu.com/

申请百度地图的时候需要报名和keystore的sha1的值

sha1值获取方式是,在cmd命令中使用keytool命令(如果提示没有这个命令说明没有配置好环境变量,百度自行解决)

xmarin的秘钥口令是空的,直接回车即可,在cmd中复制秘钥的方法是右键,标记,选中sha1的值,回车 就复制好了

keytool -list -v -keystore 文件位置

解决完百度地图的编译和key后,还需要导入so库,so库是百度地图的核心带码,添加方法是在安卓项目中新建libs文件夹(这个应该不用讲吧)

在libs中添加arm64-v8a,armeabi,armeabi-v7a三个目录(这三个目录都添加是为了保证软件兼容性增强,百度之要求armeabi这一个目录添加)

将so库分别拷入其中,生成操作设置为AndroidNativeLibrary 注意,so库是直接放在安卓项目里的,不是bmap里

如下图

最后是编码了,新建一个类继承Activity ,新建布局文件layout1

布局代码如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />
</LinearLayout>

cs代码如下

namespace TestAndroid_BlankApp
{
    [Activity(Label = "TestBaiduMap")]
    public class TestBaiduMap : Activity
    {
        private MapView map;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SDKInitializer.Initialize(ApplicationContext);
            SetContentView(Resource.Layout.layout1);
            map = FindViewById<MapView>(Resource.Id.bmapView);
            // Create your application here
        }
        protected override void OnResume()
        {
            base.OnResume();
            map.OnResume();
        }
        protected override void OnPause()
        {
            base.OnPause();
            map.OnPause();
        }
        protected override void OnDestroy()
        {
            base.OnDestroy();
            map.OnDestroy();
        }
    }
}

debug,运行效果如下

运行成功,这时候我尝试编译release版本,发现报错,“java.exe”已退出,代码为 1。

检查了半天,发现是因为编译release版本的时候vs2015会去混淆代码,百度地图的代码是不能混淆的,所以在配置里面我关闭了混淆配置,暂时没研究这上面怎么排除混淆

修改如下

我将编译后的版本放倒了百度云上,大家可以看效果,至此百度地图已集成到了xmarinapp中

http://pan.baidu.com/s/1dE2Cyx7

app分为两个页面,聊天室和百度地图测试页面,聊天服务器是我的电脑,白天有时候会开启

时间: 2024-08-28 09:18:26

xmarin.android for vs2015使用百度地图api3.6.1的相关文章

Android应用中使用百度地图API定位自己的位置(二)

官方文档:http://developer.baidu.com/map/sdkandev-6.htm#.E7.AE.80.E4.BB.8B3 百度地图SDK为开发者们提供了如下类型的地图覆盖物: 我的位置图层(MyLocationOverlay):用于显示用户当前位置的图层(支持自定义位置图标): Poi搜索结果图层(PoiOverlay):用于显示兴趣点搜索结果的图层: 路线图层(RouteOverlay):公交.步行和驾车线路图层,将公交.步行和驾车出行方案的路线及关键点显示在地图上(起.终

Android中级篇之百度地图SDK v3.5.0-一步一步带你仿各大主流APP地图定位移动选址功能

定位+移动选址 百学须先立志-学前须知: 我们经常在各大主流APP上要求被写上地址,如百度外卖.爱鲜蜂收货地址等等:其中他们大多数是可以让我们在地图上移动选址.就如下面这段GIF演示的一样: 尽信书,不如无书-能学到什么? 1.地图状态MapStatus类及监听setOnMapStatusChangeListener 2.定位LocationClient类 3.反地理编码GeoCoder类 工欲善其事必先利其器-申请Key 百度地图访问应用(AK)申请地址:http://lbsyun.baidu

Android应用中使用百度地图API并加入标注(一)

网上一些资料这样的的内容已经过时了,这里是最新的内容,假设哪里不正确,请吐槽... 1)下载百度地图移动版API(Android)开发包      要在Android应用中使用百度地图API,就须要在project中引用百度地图API开发包,这个开发包包括两个文件: 下载地址:http://pan.baidu.com/s/1i31enrB 2)申请API Key //包名 格式:比如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77

Android应用中使用百度地图API并添加标注(一)

网上一些资料这种的内容已经过时了,这里是最新的内容,如果哪里不对,请吐槽... 1)下载百度地图移动版API(Android)开发包 要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件: 下载地址:http://pan.baidu.com/s/1i31enrB 2)申请API Key //包名 格式:例如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77:FB;com.maji

Android第十期 - 百度地图

已经把每个功能都独立出来了,idkey在百度云地图开发官网去自己申请就可以了 效果图如下: Android第十期 - 百度地图

Android 开发之集成百度地图的定位与地图展示

app 应用中,大多数应用都具有定位功能,百度定位就成了开发人员的集成定位功能的首选,最近也在做定位功能,但是发现百度真是个大坑啊, sdk 命名更新了,相关代码却不更新,害得我花费了很长时间来研究,今天来给大家分享下 Android 集成百度地图要注意的事情,这里只是集成了定位和地图展示功能,其他功能还未涉及,先看下效果图: 接下来介绍一下 Android 集成百度地图的步骤: 首先登陆百度开发平台,在我的应用中创建应用,然后你会看到如下界面: 根据它的要求填写相关信息,这里的安全是有 SHA

Android Studio下加入百度地图的使用(二)——定位服务

上一章(http://www.cnblogs.com/jerehedu/p/4891216.html)中我们已经完成了环境的搭建,这一章我们来研究一下如何使用. 第一步:在xml文件中加入以下权限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.android.launcher.permission.READ_S

Android Studio下加入百度地图的使用 (一)——环境搭建

最近有学生要做毕业设计,会使用到定位及地图信息的功能,特此研究了一下,供大家参考,百度定位SDK已经更新到了5.0,地图SDK已经更新到了3.5,但是在AndroidStudio中使用还是存在一些不稳定的情况,本章我们使用定位SDK 4.0,MAP SDK 3.0,下面我们开始搭建环境. 第一步:申请Key 百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制.但是需申请密钥(key)后, 才可使用百度地图Android SDK.而且必须要注册一个百度账号. 网址: http

Android中级篇之百度地图SDK v3.5.0-FragmentMap地图框架[图解SupportMapFragment类]

创建一个基于Fragment的地图框架 SupportMapFragment SupportMapFragment 类,管理地图生命周期. 构造器概要 构造器和说明: SupportMapFragment() 构造函数 方法概要 限定符和类型 方法 说明 BaiduMap getBaiduMap() 获取百度地图控制器,当执行完 onCreateView 函数之后调用,否则返回 null. MapView getMapView() 获取百度地图控件 static SupportMapFragme