百度Android SDK应用弹错Couldn’t load libBaiduMapSDK_vX_X_X错误解决

来源:互联网 发布:淘宝儿童摇摆车扭扭车 编辑:程序博客网 时间:2024/05/22 00:53

 近期接触的应用开发中有用到百度Android SDK的开发内容,具体内容为根据具体的经纬度进行详细地址的反向查询,其中有用到Android SDK的API包,我下载的版本为Android SDK v2.4.0 。在AVD上调试没出现问题,但是到真机调试时出现了java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK_v2_4_0: findLibrary returned null。

          首先想到的是自信查看了百度的API开发文档,在此引用:

          

工程配置

    第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;

    注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。

andorid_dev1.png

    第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。

    通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。

注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:

1. 在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;

2. Project -> clean-> clean all .


        在确定了按照上述配置图配置SDK路径后,重新编译打包好APK后进行了手动安装,一切正常。然后重新打包整个系统(注:此应用为系统预装的应用,因此需要打包到系统),然后重新刷系统,开机,运行。。弹错。。错误依旧。

        网上查了相关的解决办法,大概如下:

            1。SDK放置路径有误,准确路径为libs/baidumapapi_vX_X_X.jar,同时在libs/armeabi/路径下放置对应的so文件。

            2. SDK的so文件需要重新在libs/下建armeabi-v7a目录,并将so文件拷贝到该目录下。

            3. 重新建工程然后拷贝对应的so文件和jar包到文档中的指定目录。

        经过以上的方法,对于我的问题依然没有解决,最后经过排查,发现在系统目录下,跟APK同时打包的系统目录中有    

        xxx\system\app,xxx\system\lib,xxx\system\data三个目录中APP放置了我编译打包好的APK,lib中放入的则是APK所引用的so文件,因此果断放入libBaiduMapSDK_v2_4_0.so文件,然后重新编系统,刷系统后问题解决。

        总结了下,我出问题的关键地方应该是忽略了,手动安装和系统预装的区别,手动安装时应该会拷贝依赖的库文件到系统,而系统预装则需要将依赖库文件提前拷贝到系统APK同级目录用打包的方式安装到系统吧。所以很多人出问题不妨考虑下是否是作为预装的应用来打包到系统,如果是就不要忘了把需要用的库文件都打包到系统。


1 0