so 加载失败

问题出现过程

当我通过

添加了工程另外的工程库的时候,发现我之前工程里通过jni编译的。so库不能用了。后来经过高人指点说需要在lib里面添加armeabi-v7a.然后把armeabi里面的so文件复制过来。程序就能正常加载了。但是不知道是为什么 网络上的资料大致如下 求高人解释

    在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了armeabi 和armeabi-v7a两个文件夹,我们的c代码编译成的本地库(各种.so)就会放在这两个文件夹其中的一个。那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢?

    armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips的就悲催的被忽视了),不同的cpu的特性不一样,armeabi就是针对普通的或旧的arm cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm cpu。

      在android.mk里可配置以下宏:

TARGET_CPU_API := armeabi

APP_ABI := armeabi

 

当你编译时出现一些链接动态库的undefine错误,或你的apk运行时出现装载.so动态库错误时,不妨看一下这个cpu类型的配置是否有误。

posted on 2013-03-21 16:48  _star  阅读(581)  评论(0)    收藏  举报

导航