armeabi和armeabi-v7a引起的问题

  android的根目录下有个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类型的配置是否有误。

  但是有时候你的主程序中只有armeabi或者armeabi-v7a,而你引用的library 工程里面这两个(armeabi和armeabi-v7a)都有。这时你在运行你的程序就会出现问题:找不到.so文件了。

  解决办法:在你的主程序libs下面把这两个文件夹都建立(已有的就不要建了),把里面的.so文件拷贝一份到新建立的文件夹中,这样就ok了。

原文地址:https://www.cnblogs.com/WoodyWpck/p/3272884.html