文档章节

学习:APP_ABI

洋碱
 洋碱
发布于 2016/02/15 15:10
字数 477
阅读 1733
收藏 1

在Application.mk文件中有个预定义命令参数APP_ABI,是指明编译与调试的CPU架构。

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

    

CPU架构 ABI
ARMv5 armeabi 32位,从2010年
ARMv7 armeabi-v7a 32位,从2010年
x86 x86 32位,从2011年
MIPS mips 32位,从2012年
ARMv8 arm64-v8a 64位,从2014年
MIPS64 mips64 64位,从2014年
x86_64 x86_64 64位,从2014年

相应生成arm64-v8a,mips64,x86_64下的文件需要NDK_r10以上版本支持。在Application.mk文件里配置APP_ABI的内容。例如指明某个具体的CPU架构

APP_ABI := arm64-v8a

或者直接生成所有的版本

APP_ABI := all

注意:根据不同的NDK版本,APP_ABI := all仅能生成当前版本支持的ABI信息库文件,如果需要生成最新的必须更新相应的NDK版本。

或者明确写明支持的CPU架构

APP_ABI := armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64

建议采用该方法

注意:由于目前版本支持的问题,采用Eclipse+NDK+Windows集成方式开发,对应编译生成对应CPU架构的so文件是没有问题的。但是不一定可以执行调试工作,启动NDK调试模式时将会提示无法识别对应的ABI。

注意:(1)、目前模拟器只有x86_64的没有arm64-v8a的;(2)、在用真机测试armv8-a时,最好先通过adb shell, cat  /proc/cpuinfo ,来查看下真机是否是支持armv8-a;(3)、arm32和arm64有些配置参数不能共存,如-msoft-float仅在arm32位下支持,在arm64位下是不支持的. 

© 著作权归作者所有

共有 人打赏支持
洋碱

洋碱

粉丝 3
博文 65
码字总数 26002
作品 0
广州
高级程序员
私信 提问
使用Native库的时候控制APK大小

什么是ABI以及是如何工作的 ABI非常精确的定义了应用程序的机器代码与系统的运行时进行交互,所以你希望为每个CPU架构指定一个ABI。 Android支持如下的ABIs类型 当你在应用程序中添加Native库...

尺锤
2017/08/10
0
0
动态加载so注意事项&案例

常用架构 加载so的两种方式 打包在apk中的情况,不需要开发者自己去判断ABI,Android系统在安装APK的时候,不会安装APK里面全部的SO库文件,而是会根据当前CPU类型支持的ABI,从APK里面拷贝最...

编程之乐
2017/11/11
0
0
【腾讯Bugly干货分享】动态链接库加载原理及HotFix方案介绍

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57bec216d81f2415515d3e9c 作者:陈昱全 引言 随着项目中动态链接库越来越多,我们也遇到了很多...

腾讯Bugly
2016/08/26
94
0
【转】关于Android的.so文件你所需要知道的 (一)

原文链接 早期的Android系统几乎只支持ARMv5的CPU架构,你知道现在它支持多少种吗?7种! Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS ...

拉风的道长
2016/03/01
98
0
ANDROID动态加载 使用SO库时要注意的一些问题

基本信息 作者:kaedea 项目:android-dynamical-loading Android项目里的SO库 正好动态加载系列文章谈到了加载SO库的地方,我觉得这里可以顺便谈谈使用SO库时需要注意的一些问题。或许这些问...

Kaede
2017/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android :报错Your project path contains non-ASCII characters.

报错内容如下 Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please move your project to a different directory. See ht......

lanyu96
8分钟前
0
0
[LintCode] Number of Islands(岛屿个数)

描述 给一个01矩阵,求不同的岛屿的个数。 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。 样例 在矩阵: [ [1, 1, 0, 0, 0], [0, 1, 0, 0, ...

honeymose
8分钟前
0
0
Nginx平滑添加模块

Nginx已经编译安装并运行了一段时间, 然后某一天, 发现需要用到某个模块但当初没有编译, 这个时候怎么办呢? 卸载重新安装肯定可以的, 如果Nginx版本没有变更的话, 则有一个相对平滑的方法来添...

老菜鸟0217
13分钟前
1
0
spark安装测试

spark安装测试 由于本地已经安装好hadoop相关组件,所以本文是在yarn的基础上对spark进行安装及测试 确保hdfs及yarn成功启动,hadoop版本为2.7.3 安装scala,由于本人安装的spark是2.4.0,对应...

-九天-
27分钟前
3
0
周末看完了《电能计量自动化技术》

整体质量还行,下面分别将心得记录如下: 第一章:发展历程可以看看,现在算是智能电网阶段 2:讲主站系统。以文件进行各模块的交互很值得思考,尤其是批量数据,多团队合作的情况下。另外线...

max佩恩
47分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部