(转载)Eclipse(或者Android Studio)中NDK开发使用Application.mk指定需要编译的平台

本文介绍了ABI(Application Binary Interface)的概念及其在Android开发中的作用,包括四种常见的ABI选项:armeabi、armeabi-v7a、x86和mips。同时讲解了如何通过设置APP_ABI来生成针对不同芯片的.so文件,以及这些文件在Android应用运行过程中的选择和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(转载)https://blog.youkuaiyun.com/e_inch_photo/article/details/75214124

ABI(Application Binary Interface)实际就是指应用程序基于哪种指令集来进行编译,我们能用到的ABI 也就四种 armeabi armeabi-v7a x86 和mips ,前两者是最常见的。

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

总结: 
APP_ABI 赋值,就是为了交叉编译生成相应芯片可执行的指令集。

在jni目录新建Application.mk 写入: APP_ABI := armeabi armeabi-v7a mips x86 那么在你的android工程下边的 libs 里边会出现 armeabi armeabi-v7a mips x86 这四个目录下会分别生成 4个.so文件。

程序在Android手机运行时,根据手机自身CPU芯片不同,去选择调用相应的.so文件。需要注意的是选择的平台越多,so库也越多,打包的apk体积也越大。

NdkDemo代码已上传至Github

如有不正支出,欢迎留言交流! 
我的GitHub 
我的优快云 
我的简书 
开发笔记

 

//---------------------------------------------------------------------------------------

(1)发现在编译so库的时候,最新的ndk已经不支持armeabi、mips、mips64这三个硬件平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值