Android .so abi兼容,通用armeabi-v7a和arm64-v8a架构的方法

  了解完 armeabi armeabi-v7a、 arm64-v8a、 mips、 mips64、 x86、 x86_64等abi的原理后,很久以前一般都只是用armeabi在做兼容。现在其实市面上主流的手机都支持armeabi-v7a和arm64-v8a。请看如下简介:
各版本的分析如下所示:
  • 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技术等特性,研发成的。
  综上所述建议大家兼容armeabi-v7a和arm64-v8a这两个,其他架构少之又少,armeabi基本淘汰所以现在就不怎么考虑了。对于一般项目来说,足够了。
  在 build.gradle的android里的defaultConfig内添加如下内容:
defaultConfig {  
    ndk {
        abiFilters "armeabi-v7a"
        abiFilters "arm64-v8a"
    }
然后在项目中集成so文件的时候
只把armeabi-v7a和arm64-v8a这两个的so文件夹copy到libs里面,具体细节第三方平台的教程里面都写得很详细

如果报错
Error:(15, 1) A problem occurred evaluating project ':app'.
> Error: NDK integration is deprecated in the current plugin.  Consider trying the new experimental plugin.  For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental.  Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.

请在 gradle.properties 中 添加 
android.useDeprecatedNdk=true

对于新手Android开发者来说,像集成百度地图SDK、JPush等再出现找不到.so文件的问题直接只使用armeabi-v7a和arm64-v8a就足以。
如果想要更深层的了解abi google上有大量的文章。学海无涯。
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值