高德地图导航报错

在运行高德地图的导航功能时,有部分手机会遇到找不到so包的错误。主要是在运行到

aMapNavi.addAMapNaviListener(this)

这句话的时候程序崩溃,报aMapNavi为空指针错误
在查看高德地图的官方API文档的时候,发现高德导航的SDK包只有armeabi包,可兼容不同手机平台运行,但是由于本身的项目中集成了极光还有讯飞等,这些SDK需要导入以下的目录。

高德地图导航报错_第1张图片
Paste_Image.png

所以不能像高德平台上说的,只保留armeabi包。百度了很久找到以下的好文
Android集成百度与高德SDK的体会和问题解决笔记
能够很好的解决我的问题。

  • 主要是新建一个类库library,在项目中依赖这个类库,把与高德无关的需要导入多个目录的so文件放在类库中,主项目只保留armeabi包。所以项目的目录变为
高德地图导航报错_第2张图片
更改后的项目目录.png

并且在主项目build.graldedefaultConfig中添加

ndk{
      abiFilters "armeabi"
}

gradle.properties文件中增加

android.useDeprecatedNdk=true

对依赖的类库的build.gradle文件也添加如下配置。

ndk {
    abiFilters "armeabi", "armeabi-v7a", "x86","arm64-v8a","mips","mips64","x86_64"
 }

结果程序就奇迹的跑起来了。

你可能感兴趣的:(高德地图导航报错)