欢迎光临
我们一直在努力

科普 安卓APK版本v7a和v8a的区别

科普:安卓APK版本v7a和v8a的区别

armeabi默认选项,32位,支持基于ARM*v5TE的设备,支持软浮点运算(不支持硬件辅助的浮点计算),支持所有ARM*设备,armeabi-v7a32位,支持基于ARM*v7的设备,支持硬件FPU指令,支持硬件浮点运算。

armeabi-v8a64位,支持基于ARM*v8的设备,支持硬件FPU指令,支持硬件浮点运算不同手机由于cpu的不同,使用不同的驱动。

ABI:指应用基于哪种指令集来进行编译,ABI总共有四种,分别是armeabi、armeabi-v7a、mips、x86,它们都是表示cpu的类型。

为了减小apk体积,只保留armeabi和armeabi-v7a两个文件夹,并保证这两个文件夹中.so数量一致。

对只提供armeabi版本的第三方.so,原样复制一份到armeabi-v7a文件夹。

早期的Android系统几乎只支持ARMv5的CPU架构,现在支持7种!

Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7(从2010年起),x86(从2011年起),MIPS(从2012年起),ARMv8,MIPS64和x86_64(从2014年起),每一种都关联着一个相应的ABI。

应用程序二进制接口(ApplicationBinaryInterface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。

在Android系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。

总之不管有多少版本,可以简单认为:v7a是32位cpu适用,而v8a是64位cpu适用。


armeabi- v7a和armeabi- v8a有什么区别

v7a和v8a区别:

armeabi默认选项,32位,支持基于ARM*v5TE的设备,支持软浮点运算(不支持硬件辅助的浮点计算),支持所有ARM*设备,armeabi-v7a32位,支持基于ARM*v7的设备,支持硬件FPU指令,支持硬件浮点运算。

armeabi-v8a64位,支持基于ARM*v8的设备,支持硬件FPU指令,支持硬件浮点运算不同手机由于cpu的不同,使用不同的驱动。

ABI:指应用基于哪种指令集来进行编译,ABI总共有四种,分别是armeabi、armeabi-v7a、mips、x86,它们都是表示cpu的类型。

为了减小apk体积,只保留armeabi和armeabi-v7a两个文件夹,并保证这两个文件夹中.so数量一致。

对只提供armeabi版本的第三方.so,原样复制一份到armeabi-v7a文件夹。

早期的Android系统几乎只支持ARMv5的CPU架构,现在支持7种!

Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7(从2010年起),x86(从2011年起),MIPS(从2012年起),ARMv8,MIPS64和x86_64(从2014年起),每一种都关联着一个相应的ABI。

应用程序二进制接口(ApplicationBinaryInterface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。

在Android系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。

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

一. 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文件而崩溃。

android开发libs下的armeabi、armeabi-v7a、arm64-v8a等及导入so所踩过的坑

项目中需要使用第三方的sdk,集成完成后在小米4设备上能够正常运行,但在三星S6上面运行的时候crash,日志如下: Android 设备的CPU类型(通常称为”ABIs”) 早期的Android系统几乎只支持ARMv5的CPU架构,现在可以支持七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。

应用程序二进制接口定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。

在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。

各版本分析如下: mips / mips64: 极少用于手机可以忽略 x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,实现 对 arm .so 的兼容,再考虑 x86 1% 以下的市场占有率,x86 相关的两个 .so 也是可以忽略的 armeabi: ARM v5 这是相当老旧的一个版本,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈 armeabi-v7a: ARM v7 目前主流版本 arm64-v8a: 64位支持 所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced SIMD技术等特性,研发成的。

PS:在2011年11月,ARM公司发布了新一代处理器64位架构ARMv8的部分技术细节(也就是我们常说的Cortex-A57A53),代表着未来移动处理器迈入64位行列。

我们得明确一点,ARM公司自己本身并没有64位芯片设计技术,他是通过了收购MIPS64处理器架构的部分技术使用权,再结合ARM的一些特性设计出来的。

也就是说:MIPS、ARM、X86三大架构中,唯一没有64位技术的ARM,通过收购MIPS的形式得到了64位。

介绍参考资源如下:宝剑锋从磨砺出,梅花香自苦寒来

小白求教请问下图中软件版本有何不同?

这些都是“架构(CPU)”相关的,就是相同的软件,分别用在不同的(或多个)架构上的andriod安装包。

1. armeabi-v7a-release:armeabi-v7a的安装包。armeabi 指 Android NDK 开发中的 abi。包括(arm架构的) armeabi、armeabi-v7a、arm64-v8a, (intel x86架构)x86和x86_64,以及 (mips架构) mips和mips64。这里是指用于ARM的armeabi-v7a的安装包。2. universal-release:是指“通用”安装包,应该适合所有架构。3. x86-releaseintel x86 CPU专用安装包4. arm64-v8a-release64位ARM中,v8a架构专用安装包。

有问题继续交流,谢谢。

apk是什么文件

apk文件是Android操作系统使用的一种应用程序包文件格式。

Android应用程序的代码想在Android设备上运行,要先进行编译,被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。APK是Android application package的缩写,即Android安装包(apk)。APK是类似SymbianSis或Sisx的文件格式。

APK文件可以通过多种方式获取,例如从Google Play商店下载、通过第三方应用商店下载或从开发者处获取。在安装APK文件之前,您可能需要在设备上开启未知来源应用程序安装权限,以允许安装来自非官方来源的应用程序。

apk的应用架构

APK是Android应用程序的安装文件,它包含了应用程序的所有组件和资源。APK文件的架构取决于应用程序的目标设备架构。以下是常见的APK应用架构:

1、armeabi:适用于旧款ARM处理器的设备。

2、armeabi-v7a:适用于大多数ARMv7处理器的设备,包括大多数现代Android设备。

3、arm64-v8a:适用于64位ARM处理器的设备,如一些高端Android设备。

4、x86:适用于x86架构的设备,如一些Intel Atom处理器设备。

5、x86_64:适用于64位x86架构的设备,如一些高端Android设备。

通常,一个APK文件可能包含多个架构的二进制文件,以便在不同的设备上运行。Android系统会根据设备的架构自动选择合适的二进制文件来运行应用程序。

如何查看Android手机CPU类型是armeabi,armeabi-v7a,还是arm64-v8

1.armeabiv-v7a: 第7代及以上的 ARM 处理器. 2.arm64-v8a: 第8代、64位ARM处理器,现在很多手机使用X86的手机.红米11.三星 Galaxy S6是其中之一。

3.armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。

4.x86: 平板、模拟器用得比较多。

使用命令:adb shell getprop ro.product.cpu.abi 查看Android设备的CPU架构信息,可以使用命令来完成: 1、adb shell 2、cat/proc/cpuinfo 解析说明: processor: 0/1 表示第几个核。

BogoMIPS:伪MIPS,用于测量CPU速度 Features:表示当前CPU所支持的特性,比如neon,vfp等。

CPU architecture:7表示arm-v7,8表示arm-v8


歆兴故事汇

长按二维码关注

看完要关注,从此人生不迷路!


赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《科普 安卓APK版本v7a和v8a的区别》
文章链接:https://www.775n.com/post-866.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

登录

找回密码

注册