消防网站建设目标,请人代做谷歌外贸网站,欧普建站,微信门户网站开发引言 作为一个Android开发人员#xff0c;so对于我们来讲是极其常见的#xff0c;各种大厂的SDK中都包含着各种各样的so#xff0c;而so也是apk瘦身的重要一环#xff0c;减少so平台的数量#xff0c;可以极大限度的减少apk的大小。 Android 中的so 先看一张官方的图… 引言 作为一个Android开发人员so对于我们来讲是极其常见的各种大厂的SDK中都包含着各种各样的so而so也是apk瘦身的重要一环减少so平台的数量可以极大限度的减少apk的大小。 Android 中的so 先看一张官方的图 ABI 可以将so分为以下几种 armeabi: ARM v5 这是相当老旧的一个版本缺少对浮点数计算的硬件支持在需要大量计算时有性能瓶颈armeabi-v7a: ARM v7 目前主流版本arm64-v8a: 64位支持mips / mips64 极少用于手机可以直接忽略x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具实现对 arm .so 的兼容再考虑 x86 1% 以下的市场占有率x86 相关的两个 .so 也是可以忽略的Android Studio中如何引用so 在main目录下创建jniLibs文件夹将相应的so库存放进去。 jinLibs 在相应的module下的gradle中进行配置android{repositories {flatDir {dirs libs}}
}同步项目即可。 如何选择so 先不说原理我们可以看看大厂是怎么做的。 先看看 TIM Tim 再看看淘宝 淘宝 从Tim和淘宝的apk包中可以看到两个都只是保留了armeabi平台的lib所以我们也可以直接参照大厂的做法只保留armeabi平台其它的暂时可以不考虑因为我们也做不到兼容全平台。 如何过滤 直接在gradle中配置即可 buildTypes{release{...ndk {abiFilters armeabi // 保留这种架构的CPU}...}
}过滤so 一般情况下是在打包的时候指定so但是也有特殊情况需要debug模式下过滤同上直接在debug中配置即可。 ndk {abiFilters armeabi, armeabi-v7a, x86, mips
}后续敬请期待 免为其难的关注一下公众号吧 生活实在是太苦啦 FullScreenDeveloper