android的armeabi和armeabi-v7a

在ANE中如果SDK调用了so库,则需要把so库放到ANE下Android-ARM/lib/armeabi (调试模式)或者 armeabi-v7a(发行模式)下。

可以贴个ADT代码说明问题:

 

//m_configType.equals("apk") 是否是发行模式
//(hasCaptiveRuntime() 是否带运行时
 if ((m_configType.equals("apk")) || (hasCaptiveRuntime()))
    {
      destApkDirectory = "lib/armeabi-v7a/";
    }
    else
    {
      destApkDirectory = "lib/armeabi/";
    }

 

 

而这个armeabi和armeabi-v7a究竟是什么意思?

有什么深意么?

为什么调试模式和发行模式adobe会选择不同的文件夹?

我在这篇记录下我对于这个小问题的理解。

  • armeabi与armeabi-v7a表示支持不同的CPU类型

armeabi是指的该so库用于ARM的通用CPU,而v7a的CPU支持硬件浮点运算。因此armeabi通用性强,但速度慢,而v7a能充分发挥v7a CPU的能力,在AIR打包APK调试模式adobe选择的是通用性强的armeabi模式。

 

  • android支持不同CPU的深层含义

首先从硬件支持方便来看,我们的adnroid设备目前为止大部分都是支持ARM芯片,(当然市面上此刻最新的android机器还支持intel等另外的几个芯片,例如intel最新的凌动项目芯片,就获得了android4.1的青睐)。从android版本与支持ARM硬件编码的程度来看:

起初android1.6:只支持armv4与armv5te指令集。

到了android2.0:增加了支持arm-vfp,armv6,armv6t2指令集。

到了android2.2:增加支持armv7-a指令集。

所以armeabi-v7a 应该是与AIR限定支持android2.2以上的条件有关。android2.2以上能让硬件发挥更大的作用。

  • 我项目中使用armeabi还是armeabi-v7a

对于AIR项目来说性能问题是最大的瓶颈,能优化一点就一点,所以如果接平台方SDK或者写ANE的时候使用到SO库,个人推荐全部放到armeabi-v7a下,而不要为了兼容放到armeabi。

-EOF-

 

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

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

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

TARGET_CPU_API := armeabi

APP_ABI := armeabi

 

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

========================================================================================================

现在还有x86的了,其实armeabi 、armeabi-v7a 和x86是编译 NDK 库时,可以使用三种支持的应用二进制接口(ABI):

  1. ‘armeabi’ – 默认选项,将创建以基于 ARM* v5TE 的设备为目标的库。 具有这种目标的浮点运算使用软件浮点运算。 使用此 ABI 创建的二进制代码将可以在所有 ARM* 设备上运行。
  2. ‘armeabi-v7a’ – 创建支持基于 ARM* v7 的设备的库,并将使用硬件 FPU 指令。
  3. ‘x86’ – 生成的二进制代码可支持包含基于硬件的浮点运算的 IA-32 指令集。

==========================================================================================================

什么是 NEON?

NEON* 是一种 ARM* 技术,主要用于多媒体(智能手机和高清电视等)应用。 ARM* 表示其基于 128 位 SIMD 引擎的技术 – ARM* Cortex*(一种串行扩展)—可提供比 ARM* v5 架构至少高 3 倍的性能,以及比 ARM* v6 至少高 2 倍的性能。 如欲了解有关此技术的详细信息,以深入了解 NEON 及其它性能考虑,请访问以下网址: http://www.arm.com/products/processors/technologies/neon.php

此处的关键理念为,各寄存器被“堆积”成一个矢量,其中每一个寄存器均为一个元素,并与其它元素的数据类型相匹配。 在此基础之上,运算在管道内执行,因而这一方法被称作 Packed SIMD。

SSE: 英特尔推出的类似 NEON 的工具

SSE 指面向英特尔架构(IA)的SIMD 流指令扩展。 目前,英特尔® 凌动™ 最高支持 SSSE3(补充 SIMD 流指令扩展 3)。 凌动™ 暂不支持 SSE4.x。后者也是一个 128 位引擎,用于打包浮点数据。 这一执行模式开始于 MMX 技术。SSx 是较新的技术,取代了 MMX。。 如欲了解详细信息,请参阅英特尔《IA-32 和 IA-64 软件开发人员手册》中的“第一卷: 基础架构”部分。网址为: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html。 目前,SSE 概述部分在 5.5 节。 它提供 SSE、SSE2、SSE3 和 SSSE3 的操作码。注意,数据运算通常会涉及到处理基于精度的打包浮点数值;并且需要在 XMM 寄存器之间,或在这些寄存器与内存之间批量传输数据。 XMM 寄存器主要用于取代 MMX 寄存器。

压缩和解压缩是帮助增强用户体验的必不可少的工具。 过去,您必须使用 PC 下载大文件,解压缩并复制到手机。 现在,您可以直接在智能手机上执行整个过程。 Zarchiver Pro 是可以满足您所有要求的完美应用程序。 如果您定期使用 OBB 文件安装 Android 游戏,则 Zarchiver Pro 绝对是必不可少的应用程序。 Android 解压缩工具 ZArchiver Pro 中文版Android 解压缩工具 ZArchiver Pro 中文版 ZArchiver Pro 的优点: – 白色与黑暗主题; – 密码存储; – 存档中的图像预览; – 编辑档案中的文件(请参见注释); ZArchiver Pro 可让您: 创建以下归档类型:7z(7zip),zip,bzip2(bz2),gzip(gz),XZ,tar; 解压缩以下存档类型:7z(7zip),zip,rar,rar5,bzip2,gzip,XZ,iso,tar,arj,cab,lzh,lha,lzma,xar,tgz,tbz,Z,deb,rpm,zipx ,mtz,chm,dmg,cpio,cramfs,img(fat,ntfs,ubf),wim,ecm,arc(freearc); 查看档案内容:7z(7zip),zip,rar,rar5,bzip2,gzip,XZ,iso,tar,arj,cab,lzh,lha,lzma,xar,tgz,tbz,Z,deb,rpm,zipx,mtz ,chm,dmg,cpio,cramfs,img(fat,ntfs,ubf),wim,ecm,arc(freearc); 创建和解压缩受密码保护的档案; 编辑档案:向档案中添加文件或从档案中删除文件(zip,7zip,tar,apk,mtz); 创建和解压缩多部分档案:7z,rar(仅解压缩); 部分存档解压缩; 打开压缩文件; 从邮件应用程序中打开一个存档文件; 提取分割的档案:7z,zip 和 rar(7z.001,zip.001,part1.rar,z01); 主要特征: –多线程支持(对多核处理器有用); –文件名中支持 UTF-8/UTF-16。允许您在文件名中使用国家符号; –无需启用多选模式。您可以通过单击文件名左侧的图标来选择文件。
ZArchiver捐赠 ZArchiver捐赠 - 捐赠项目的特殊版本程序。目前只在应用程序图标中与免费版本不同。 ZArchiver捐赠 - ZArchiver的特殊版本,用于捐赠给项目。 专业版的优点: - 浅色和深色主题; - 密码存储; - 存档中的图像预览; - 编辑档案中的文件(见注释); ZArchiver - 是一个档案管理程序。它有一个简单而实用的界面。 ZArchiver让您: - 创建以下存档类型:7z(7zip),zip,bzip2(bz2),gzip(gz),XZ,tar; - 解压缩以下存档类型:7z(7zip),zip,rar,rar5,bzip2,gzip,XZ,iso,tar,arj,cab,lzh,lha,lzma,xar,tgz,tbz,Z,deb,rpm, zipx,mtz,chm,dmg,cpio,cramfs,img(fat,ntfs,ubf),wim,ecm,arc(freearc); - 查看存档内容:7z(7zip),zip,rar,rar5,bzip2,gzip,XZ,iso,tar,arj,cab,lzh,lha,lzma,xar,tgz,tbz,Z,deb,rpm,zipx, mtz,chm,dmg,cpio,cramfs,img(fat,ntfs,ubf),wim,ecm,arc(freearc); - 创建和解压缩受密码保护的档案; - 编辑档案:在档案中添加/删除文件(zip,7zip,tar,apk,mtz); - 创建和解压缩多部分档案:7z,rar(仅解压缩); - 部分档案减压; - 打开压缩文件; - 从邮件应用程序打开存档文件; - 提取拆分档案:7z,zip和rar(7z.001,zip.001,part1.rar,z01); 主要特点: - 多线程支持(对多核处理器有用); - 支持文件名的UTF-8 / UTF-16。允许您在文件名中使用国家符号; - 无需启用多选模式。您可以通过单击文件名左侧的图标来选择文件; 注意!欢迎任何有用的想法和愿望。您可以通过电子邮件发送或只是在这发表评论。 注意: 存档中的文件修改可以在外部程序中更改文件后更新存档中的文件。要执行此操作:从存档打开文件,选择应用程序(如果需要),编辑文件,保存更改,返回ZArchiver。当您返回ZArchiver时,将提示您更新存档中的文件。如果由于某种原因未提示更新文件,则可以在Android / ru.zdevs.zarchiver.pro / temp /中的存储卡上找到修改后的文件。 迷你FAQ: 问:什么密码? 答:某些档案的内容可能会被加密,档案只能用密码打开(不要使用手机密码!)。 问:程序运行不正常? A:给我发一封电子邮件,详细说明问题。 问:如何压缩文件? 答:通过单击图标(从文件名左侧)选择要压缩的所有文件。单击所选文件之一,然后从菜单中选择“压缩”。设置所需选项,然后按OK按钮。 问:如何提取文件? 答:单击存档名称并选择合适的选项(“在此提取”或其他)。 什么是新的 0.9.0 - 扩展Android 7/8支持; - 7zip更新为lates版本; - LZ4支持; - 修复三星设备; - 支持PIPE格式; - 更新图标和主题; - 其他修复和改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值