android中libs目录下armeabi和armeabi-v7a的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中libs目录下armeabi和armeabi-v7a的区别相关的知识,希望对你有一定的参考价值。

您好,很高兴能帮助您
在我们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
你的采纳是我前进的动力,
记得好评和采纳,答题不易,互相帮助,
参考技术A armeabi默认选项,
支持基于 ARM* v5TE 的设备
支持软浮点运算(不支持硬件辅助的浮点计算)
支持所有 ARM* 设备

armeabi-v7a
支持基于 ARM* v7 的设备
支持硬件 FPU 指令
支持硬件浮点运算

不同手机由于cpu的不同,使用不同的驱动。
ABI:指应用基于哪种指令集来进行编译,ABI总共有四种,分别是armeabi、armeabi-v7a、mips、x86,它们都是表示cpu的类型。
参考技术B 在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
参考技术C 首先:要明白ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。它作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,正是因为这样,各家都采用了自己的编号来命名,所以CPU型号较为复杂。
其次:EABI(Embedded application binary interface) 即嵌入式应用二进制接口,是描述可连接目标代码,库目标代码,可执行文件等的规范。
最后:armeabi和armeabi-v7a是表示cpu的类型,不同类型的cpu特性和指令集是不一样的,armeabi通用性强,但速度慢,而v7a能充分发挥v7a cpu的能力,也就是说armeabi针对普通的或旧的arm cpu,armeabi-v7a针对有浮点运算或高级扩展功能的arm cpu。
参考技术D armeabi和armeabi-v7a的区别即是针对不同机器的cpu。
armeabi-v7a是指较新的支持拓展功能的CPU,armeabi是相对较旧的CPU型号

Android apk打包有so,运行没有so

记录一下Android项目,在打包或者build时,apk里面都包含lib目录和so文件,但是在直接运行时,apk里面没有lib目录的问题。

  1. 问题原因在于没有在app在主app的build.gradle下配置ndk节点
ndk 
    abiFilters "armeabi",'x86', 'armeabi-v7a', 'armeabi-v8a', 'arm64-v8a'

  1. 配置完ndk节点后,检查so在jni目录下还是,在libs目录下。如果在libs目录下,还需要配置,哪里用到就在哪里配,app或者module都可以
sourceSets 
        main 
            jniLibs.srcDirs = ['libs']
        
    

参考链接

以上是关于android中libs目录下armeabi和armeabi-v7a的区别的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 怎么添加使用第三方jar包及无法编译的问题解决方法

Android Studio 怎么添加使用第三方jar包及无法编译的问题解决方法

Android Studio 怎么添加第三方库

Android中的armeabi、armeabi-v7a、arm64-v8a及x86的详解

Android studio java.lang.UnsatisfiedLinkError

aide如何导入jar