学习:APP_ABI
博客专区 > 洋碱 的博客 > 博客详情
学习:APP_ABI
洋碱 发表于2年前
学习:APP_ABI
  • 发表于 2年前
  • 阅读 1443
  • 收藏 1
  • 点赞 1
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 在使用NDK编译过程中发现针对不同的CPU架构,部分支持编译调试,部分不支持调试,故记录下来,以防忘记

在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位下是不支持的. 

标签: NDK ABI
共有 人打赏支持
洋碱
粉丝 4
博文 48
码字总数 15295
×
洋碱
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: