中关村在线

首页 排行 新品 问答 下载 论坛 手机 笔记本 数码相机 主板 显卡 平板电脑 更多

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

举报
讨论回答 (8)
slothking
wumingzhi123
一. lib和libs
放在lib中的是被reference的,放在libs中的是被include的。
放在libs中的文件会自动被编辑器所include。所以不要把API放到libs里去。
lib的内容是不会被打包到APK中,libs中的内容是会被打包进APK中

二. .so库
NDK编译出来的动态链接库。
一些重要的加密算法或者核心协议一般都用c写然后给java调用。这样可以避免反编译后查看到应用的源码。

三. .so库该如何存放
放置 .so 文件的正确姿势其实就两句话:
• 为了减小 apk 体积,只保留 armeabi 和 armeabi-v7a 两个文件夹,并保证这两个文件夹中 .so 数量一致
• 对只提供 armeabi 版本的第三方 .so,原样复制一份到 armeabi-v7a 文件夹
存放so的规则:
你应该尽可能的提供专为每个ABI优化过的.so文件,但要么全部支持,要么都不支持:你不应该混合着使用。你应该为每个ABI目录提供对应的.so文件。

四. libs下armeabi等的作用是什么
存放.so库,主要针对不同的设备兼容,也可以说是专门针对不同Android手机下CPU架构的兼容。
Android 设备的CPU类型(通常称为”ABIs”)

早期的Android系统几乎只支持ARMv5的CPU架构,后面发展到支持七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。
应用程序二进制接口(Application Binary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。

armeabi-v7a: 第7代及以上的 ARM 处理器。2011年以后生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。

如果项目只包含了 armeabi,那么在所有Android设备都可以运行;
如果项目只包含了 armeabi-v7a,除armeabi架构的设备外都可以运行;
如果项目只包含了 x86,那么armeabi架构和armeabi-v7a的Android设备是无法运行的; 如果同时包含了 armeabi, armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,同时也会导致包变大。

最后,如果我们只想支持armeabi-v7a,那么需要在gradle中配置

因为默认情况下,打包后会自动生成armeabi 到 x86的所有文件夹。这就有可能导致一些x86的设备因为在x86文件夹下找不到so文件而崩溃。
dsgtuphdav
yuliangxu
dsderz
在Android开发中,我们会遇到多种不同的汇编体系结构,比如armeabi、armeabi-v7a、arm64-v8a和x86等。这些汇编体系结构对应不同的CPU架构,以便在不同的设备上运行。
其中,armeabi是最常见的汇编体系结构之一。它适用于ARM架构的CPU,包括Cortex-A5、Cortex-A7等。该汇编体系结构使用32位代码,并且在X86模拟器中也可以运行。
另一个常见的汇编体系结构是armeabi-v7a,它适用于Cortex-A53和Cortex-A73等ARMv8架构的CPU。与armeabi不同,armeabi-v7a使用64位代码,并且在X86模拟器中无法运行。
arm64-v8a则是针对Cortex-A75和Cortex-A85等更高级别的ARMv8.1和ARMv8.2架构设计的汇编体系结构。它使用64位代码,在X86模拟器中也无法运行。
最后,x86是针对x86-64架构设计的汇编体系结构。它可以运行在X86处理器上,例如Intel i386、i7等。
在选择汇编体系结构时,我们需要考虑设备的CPU架构和运行环境。如果我们需要在多个不同设备上部署应用程序,则最好选择armeabi,因为它是所有设备都能支持的汇编体系结构。但如果你的目标设备使用了更高级别的ARMv8.x架构,则应该选择arm64-v8a或x86来适配它们。
总之,在Android开发中,我们需要根据设备的CPU架构和运行环境来选择适当的汇编体系结构,并确保我们的代码能够正确地适配各个平台。这样才能保证应用程序在不同设备上的良好表现。
moore_li
pow1100
bbk5596199
展开查看全部 8 条讨论
相关问题

Android 8.0系统什么时候正式推出?

2198 浏览 51 回答

为什么部分 iOS 用户不喜欢用 Android 系统?

1.3万 浏览 37 回答

Android劫持病毒是怎么回事?

1440 浏览 19 回答

现在iOS比Android还有优势吗?

1635 浏览 17 回答

你理想中的 Android 电脑是什么样子呢?

1.5万 浏览 16 回答

扩展阅读

联想moto S50评测:小屏硬核特种兵

评论 23

联想moto S50评测:小屏硬核特种兵

十一神宝典:这些地方错峰旅行三四天就够

评论 1

十一神宝典:这些地方错峰旅行三四天就够

外出关掉这几个设置 手机续航提升20%

评论 1

外出关掉这几个设置 手机续航提升20%

景点人山人海 这些手机一键帮你消灭他们

评论 1

景点人山人海 这些手机一键帮你消灭他们

iPhone 16 Pro系列评测 看上去更美而已

评论 1

iPhone 16 Pro系列评测 看上去更美而已
热门问题

求推荐一款笔记本。工科研究生用,便于随身携带。平时做科研,处理数据,查阅文献。不玩网游和单机,至多玩棋牌游戏和影音。喜欢摄影,需要修图。附加:纠结要不要带数字键盘区。预算最多8000。尽量便宜些。

1.2万 浏览 6 回答

求推荐一款笔记本。工科研究生用,便于随身携带。平时做科研,处理数据,查阅文献。不玩网游和单机,至多玩棋牌游戏和影音。喜欢摄影,需要修图。附加:纠结要不要带数字键盘区。预算最多8000。尽量便宜些。

美国股市平均每天的成交额大约是多少?

2272 浏览 5 回答

美国股市平均每天的成交额大约是多少?

单性恋是什么意思啊?

3427 浏览 4 回答

单性恋是什么意思啊?

平面设计一个月工资一般多少

6520 浏览 5 回答

平面设计一个月工资一般多少

为何手机一直收到00447786205094发来的短信,而且是一串乱七八糟的英文字母?

6441 浏览 4 回答

为何手机一直收到00447786205094发来的短信,而且是一串乱七八糟的英文字母?

256gSSD是否够用?打算买个笔记本,办公为主,查阅文献等。不玩大型游戏,至多玩一些棋牌类游戏和影音娱乐。手里有2T移动硬盘,但也想在笔记本上存少量的电影。平时玩单反,处理图片比较多。

2.3万 浏览 4 回答

256gSSD是否够用?打算买个笔记本,办公为主,查阅文献等。不玩大型游戏,至多玩一些棋牌类游戏和影音娱乐。手里有2T移动硬盘,但也想在笔记本上存少量的电影。平时玩单反,处理图片比较多。

苹果手机为什么会自动发短信到00447786205094?要怎么解决这个问题?

1162 浏览 6 回答

苹果手机为什么会自动发短信到00447786205094?要怎么解决这个问题?

苹果手机怎么打开apk文件

2万 浏览 6 回答

苹果手机怎么打开apk文件

公司电脑,安装solidworks,为何点击setup无反应,在自己电脑上是可以安装的

9567 浏览 6 回答

公司电脑,安装solidworks,为何点击setup无反应,在自己电脑上是可以安装的

来个不用下载,可以直接播放的网站,

3.8万 浏览 7 回答

来个不用下载,可以直接播放的网站,
最新问答

.exe病毒怎么完全消除,用什么杀毒软件好,360.和管家的托绕道!

8122 浏览 7 回答

.exe病毒怎么完全消除,用什么杀毒软件好,360.和管家的托绕道!

一加手机关机键坏了肿么开机?

1890 浏览 5 回答

一加手机关机键坏了肿么开机?

安卓手机怎么安装未知应用权限

7133 浏览 6 回答

安卓手机怎么安装未知应用权限

电脑上没有英文输入法怎么样在电脑上打英文?

7835 浏览 4 回答

电脑上没有英文输入法怎么样在电脑上打英文?

c盘的NVIDIA Corporation是什么文件夹,可以移动到别的盘去吗?

7641 浏览 6 回答

c盘的NVIDIA Corporation是什么文件夹,可以移动到别的盘去吗?
举报
举报成功

经过核实后将会做出处理,感谢您为社区和谐做出贡献。

请选择删除原因
删除成功
确定推荐该回答?
推荐成功

更多频道

频道导航
辅助工具