在运行高德地图的导航功能时,有部分手机会遇到找不到so包的错误。主要是在运行到
aMapNavi.addAMapNaviListener(this)
这句话的时候程序崩溃,报aMapNavi
为空指针错误
在查看高德地图的官方API文档的时候,发现高德导航的SDK包只有armeabi
包,可兼容不同手机平台运行,但是由于本身的项目中集成了极光还有讯飞等,这些SDK需要导入以下的目录。
所以不能像高德平台上说的,只保留armeabi
包。百度了很久找到以下的好文
Android集成百度与高德SDK的体会和问题解决笔记
能够很好的解决我的问题。
- 主要是新建一个类库library,在项目中依赖这个类库,把与高德无关的需要导入多个目录的so文件放在类库中,主项目只保留
armeabi
包。所以项目的目录变为
并且在主项目build.gralde
的 defaultConfig
中添加
ndk{
abiFilters "armeabi"
}
在gradle.properties
文件中增加
android.useDeprecatedNdk=true
对依赖的类库的build.gradle文件也添加如下配置。
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86","arm64-v8a","mips","mips64","x86_64"
}
结果程序就奇迹的跑起来了。
网友评论