Android使用高德地图API接口时报错

在代码都无错的情况下,可以用模拟器调用2d地图正常显示,但是却无法调用3d地图,刚开始只看到了这个错误,

 

No implementation found for void com.autonavi.ae.gmap.GLMapEngine.nativeInitParam()

百度查询无果,于是继续看logcat发现了如下错误

/data/app/com.bignerdranch.android.maplocation-uljSxP3cj3emjdp5k3RULg==/lib/x86/libAMapSDK_MAP_v6_3_0.so" has invalid e_shstrndx


2d地图的调用是不需要.so文件的,但是3d地图需要,老师要求可以显示夜间地图,但是2d地图没有,所以我们不能草草了事!要继续研究到底!突然想到高德应该提供一个开发问题的相关解决网站,在网站中找到了原因,

高版本模拟器(Android 8.0)运行地图出现黑屏,缩放按钮及LOGO正常显示,LOGCAT会输出如下日志

java.lang.UnsatisfiedLinkError: dlopen failed: "xxx.so" has no section headers

java.lang.UnsatisfiedLinkError: dlopen failed: "xxx.so" has invalid e_shstrndx

首次进入地图还会弹出”xx.xo has invalid ELF header”的警告


问题原因

高版本模拟器(Android 8.0)对SO HEADER部分进行检查,这与高德对模拟器SO的压缩方案有冲突;(真机没有问题)

如果去除压缩x86平台包体积会增加到11M,为了满足大部分用户对包体积的要求,官网中为已压缩版本;


总结:1、下载未压缩版本的的模拟器so  http://lbsbbs.amap.com/forum.php?mod=viewthread&tid=42965

            2、下载8.0一下的模拟器,gradleSdkVersion修改为26以下哎。

        3、使用真机调试,记得联网哦

引用:http://lbs.amap.com/faq/top/hot-questions/heiping/?wd=has%20invalid%20e_shstrndx&cateId=&page=&detail=true

你可能感兴趣的:(移动开发)