前几天再给一个安卓应用添加定位功能的时候用到了百度地图的sdk。
用手机跑了一下demo没问题后,按照官方给出的sdk使用指南:http://developer.baidu.com/map/geosdk-android-developv2.3.htm
将sdk添加进入了应用,跑一跑觉得没有问题,但是几次下来我发现服务器返回的位置信息老是一样的,经纬度从未改变: error code : 162 latitude : 4.9E-324 lontitude : 4.9E-324.
这才发现,定位失败了。上网翻了一下,错误代码162指的是服务器端错误。
看到网上也有一部分人遇到这样的问题,但都没有给出解决方案,故我联系了百度,他们的工作人员态度很好,提示我是不是.so文件没有加载成功。
经检查工程目录libs/armeabi/下的liblocSDK3.so(文件名根据版本不同而异)文件果然没有加载成功,在此总结一下解决方案:
如果出现以上错误,请确保libs/armeabi/下的liblocSDK3.so没有问题,
若没有,请在代码中加载.so文件,如果不会加载,请百度system.loadLibrary();
如果还是有错误,请检查你写的应用是否使用了JNI,如果有使用,一般你的工程libs文件夹下面会多出一个armeabi-v7a文件夹,这时把你的.so文件拷贝到这里面一份。
Clean并重新跑一下程序,应该就okay了。
如果还是有错可以贴出来大家交流
建议地图的sdk帮助文档里给开发者提示:潜在的so库文件加载失败bug,因为这个库文件加载失败,并不会影响我的程序运行,但是却得不到正确的内容。