首先强调下,百度地图早已经处理了对64位平台的支持,而且现在很多手机都用64位处理器了,而且很多应用使用百度地图sdk都没有问题,那么问题就是我们没有使用好百度地图了。
最近开发项目时候遇到一个问题,问题报错信息有这么一句话
/lib/arm64/libBaiduMapSDK_base_v4_1_0.so" is 32-bit instead of 64-bit。
意思应该是我的机器用的是64位的芯片,可是so文件是32位的,所以报错了。
先说一下什么大约什么情况下会遇到这个bug。后面会给出完整解决方案。
在百度地图sdk下载链接处有两个下载按钮,一个是自定义下载,一个是一键下载。
没想太多直接点击自定义下载,选择好功能,之后把libs包下面的东西复制到项目中,这里新建了一个项目。然后写了一个单独的定位功能,运行一切正常。
然后把这个项目copy到另外的工程中就遇到了上面的问题。
经过调试大概知道了问题的根源就是原来的项目里有极光推送。分析了原因之后大概理解情况是这样的。
百度sdk的libs里只有armeabi一个文件夹,极光推送的libs里除了armeabi还有好多文件夹。当把这些文件夹复制进去后百度地图sdk就不能用了。就是说当libs里面有64位的armeabi文件夹存在的时候系统会根据芯片位宽寻找so文件,如果找到的不是64的就报这个错误了。
当系统没有64位的文件夹时候会直接调用arm