android so文件的兼容,以及架构的使用方法

本文讨论了Android项目中SO文件导致的APK体积增大问题,分析了不同ABI如armeabi、armeabi-v7a和arm64-v8a的适用性和市场占比。建议仅兼容armeabi-v7a和arm64-v8a以减小体积,同时提供了在项目中添加SO文件和解决NDK报错的方法。

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

简言:

现在公司做的项目应用到地图,使用的是高德地图,按照高德地图的api进行集成,集成很简单,

但是运行项目,发现apk体积非常庞大,在集成完导航之后,达到25M,项目整体增加了20M,

这肯定不是公司想要的,最后查看,发现是so文件导致的,

 

1. 我们首先要了解的是android so文件,abi 和cpu的关系,推荐一篇博客: http://blog.youkuaiyun.com/xx326664162/article/details/51163905

 

so文件包括:armeabi、armeabi-v7a、arm64-v8a、mips、mips64、x86、x86_64等。

很久以前一般只用armeabi 在做兼容

现在市场上主流手机都支持armeabi-v7a和arm64-v8a。

 

2.针对个版本进行分析:

1)mips / mips64: 极少用于手机可以忽略,有兴趣的可以百度一下。

2)x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,实现 对 arm .so 的兼容,再考虑 x86 1% 以下的市场占有率,x86 相关的两个 .so 也是可以忽略的

3)armeabi: ARM v5 这是相当老旧的一个版本,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈

4)armeabi-v7a: ARM v7 目前主流版本,一般市面上的骁龙系列或者麒麟系列的处理器绝大部分都是这种架构

5)arm64-v8a: 64位支持

所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced SIMD技术等特性,研发成的。

 

综上所述建议大家兼容armeabi-v7a和arm64-v8a这两个,其他架构少之又少,armeabi基本淘汰所以现在就不怎么考虑了。对于一般项目来说,足够了。

 

具体的使用:

1) 在项目中 添加so 文件。

 

2)  在build.gradle的android里的defaultConfig内添加如下内容:

 

3)如果报错

  1. Error:(15, 1) A problem occurred evaluating project ':app'.
  2. > 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值