Caused by: java.lang.UnsatisfiedLinkError...解决经历

Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapVOS_v2_1_3: findLibrary returned null
在使用百度地图的时候碰到了这问题 网上搜了下各种方法 都不顶用 我想死的心都有了。。有没有碰到过这问题的 求分享下经验啊。。。。。。。。

后来看了百度地图sdk的demo以后,是因为有一个文件 liblocSDK.so,必须放在 libs/armeabi 目录下。将其对应的liblocSDK.so拷到相应的目录下,问题完美解决了。问题是完美解决了,可这个liblocSDK.so文件是什么样的东东了。后来查了一下资料以后:

so文件即是动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import   directory的表,该表的每一项包含一个库的名字。根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序。可执行程序根据更新后的库信息调用库中的函数或引用库中的数据。这种类型的动态加载成为装载时加载   ,被包括Windows和Linux的大多数系统采用。装载程序在加载应用软件时要完成的最复杂的工作之一就是加载时链接。  即相当于windows的dll文件。你连一个程序的dll文件没有了,你程序肯定跑不起来。

通过此次经历,我对相应的so文件有了一个深刻的认识。

上一篇:My安卓知识4--Media Player called in state 0


下一篇:安装VVDocumenter-Xcode-master (Xcode 7.1)的过程