Android APP接入高德SDK问题与记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android APP接入高德SDK问题与记录相关的知识,希望对你有一定的参考价值。

参考技术A 高德SDK提供了定位、地图、导航相关的丰富的接口。本文记载我接入高德SDK过程及遇到的问题,如有任何错误烦请指正。

首先,要申请高德key。参考 https://lbs.amap.com/faq/android/map-sdk/create-project/43112 首先获得SHA1码,如果存在keytool命令失效的情况,可以跳转到keytool.exe所在目录再进行操作。
https://console.amap.com/dev/key/app 填写相关信息,提交,得到高德的key。

首先,配置项目的build.gradle,打包时加入签名文件:

然后,加入高德地图相关依赖:

注意:高德地图不建议同时使用3D和2D地图,如无必要,不要加入2d地图的依赖,否则会产生报错:More than one file was found with OS independent path
由于定位需要用到包括网络、定位以及离线地图缓存需要的存储权限,推荐使用livePermission获取动态权限:

接下来,配置AndroidManifest.xml:
申明权限:

在application标签范围内加入高德key以及高德定位服务:

创建一个MapActivity及对应的xml文件,activity_map当中加入一个高德地图的容器:

在MapActivity当中动态申请存储权限:

mapView初始化:

再在onDestroy、onResume、onPause、onSaveInstanceState当中分别调用mapView的相关方法。
aMap初始化:

至此,已经可以看到地图显示。接下来,进行定位蓝点的初始化:

定位模式有以下八种:

点击右上角的定位按钮,视图的中心移至定位点,并且可以看到定位的蓝色箭头会随着手机方向移动,并且每两秒钟更新位置。移动地图时,视图中心不会因为定位点变化而移动。
在 高德地图-显示定位蓝点 ,可以看到更多个性化设置的内容,包括可以自定义定位蓝点的图标、定位精度圈等。

Android 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore

此篇博客最后更新时间写自2016.5.18。当下高德地图jar版本为3.3.1。

使用高德地图碰到此问题,纠结许久(接近4个多小时)。

记录在此,希望遇到相同问题的读者可以有所借鉴。

错误截图:

导致问题的原因主要有两种:

1、so文件操作不当问题。可能是so文件与jar不匹配,也可能是so文件未导入。

解决办法:

下载与jar相匹配的jar。sdk下载网址:http://lbs.amap.com/api/android-sdk/down/

2、由于在X86手机上运行,而此时高德地图官网并未发布X86的so文件,导致应用崩溃。

(注:android4.4之后的大部分机型都是X86的)

解决办法:

只保留armeabi文件夹,其他的统统删掉,因为大多数x86平台的手机都会兼容armeabi的版本。
但是会发现就算这样做了在模拟器上面依旧装不上,那是因为模拟器没有兼容,但是他可以替换平台。如果是genymotion的话,需要安装一个转换为arm的插件。

针对第二个问题,官网的配置工程也是有提到的,如下图:

(网址:http://developer.amap.com/api/android-navi-sdk/guide/project/

以上是关于Android APP接入高德SDK问题与记录的主要内容,如果未能解决你的问题,请参考以下文章

android: 在APP中显示高德地图SDK

Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作

Android 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore

Android 高德地图SDK在API 31以上崩溃的问题 GLMapEngine.destroyAMapEngine(GLMapEngine.java:1851)

高德地图接口API与DSK的区别,与app软件的关系

高德android定位sdk 2.4.0 支持android2.2吗