文章目录
结论
- 安全性+安装后额外库的1/3(约50M)体积占用,换取下载体积减少2/3占用。
代码
xml
//AndroidManifest.xml
<application
...
android:extractNativeLibs="true">
分析
| 架构 | 描述 | 范围 |
|---|---|---|
| armeabi-v7a | 较新的ARM32位架构(支持硬件浮点运算,兼容大多数旧设备) | 99%手机 |
| arm64-v8a | ARM 64 位架构(现代设备的主流架构,性能更高) | 99%手机 |
| x86 | Intel 32 位架构(适用于模拟器或少数 Intel CPU 设备) | 模拟器/少数Intel设备 |
| x86_64 | Intel 64 位架构(适用于高性能模拟器或部分平板设备) | 模拟器/少数Intel设备 |
- 将APK拖拽到Android studio可以分析包体占用,发现是.so文件占用较大
- 启用《结论》策略
对比
| extractNativeLibs | True | False |
|---|---|---|
| 机制 | 安装时解压到私有目录 | 不提前解压,运行时从apk映射到内存 |
| 下载大小 | 更小------apk中是压缩的 | 大------apk中是未压缩的 |
| 安装后占用 | 更大------压缩+解压,共2份 | 更小------仅仅存储一份未压缩的 |
| 应用启动速度 | 库解压了------理论微小优势 | 略慢------现代设备不明显 |
| 对动态交付的支持 | 不支持 | 完美支持------是实现App Bundle和Play Feature Delivery的基础 |
| 安全性与反篡改 | 较低 | 较高------.so文件始终在APK包内,受签名保护,更难被篡改 |
| 适用场景 | 传统渠道分发,下载体积敏感,不计划适用App Bundle | 通过GooglePlay分发;更在意用户存储空间体验;适用AppBundle或动态功能模块;更好的安装包安全性。 |