安卓一次打多包

目前很多应用市场,推荐32位包和64位包分开上传,这样包包体积更小。魅族要求只能上传64位包。安卓默认打多包是universalApk,包含64和32位的so 文件。

打多包的方式很多,可以通过变体等,但最方便的是使用splits 配置。

更新Gradle配置: 打开你的React Native项目中的 android/app/build.gradle 文件。在 defaultConfig 部分中,添加以下配置:

splits {
    abi {
        enable true
        reset()
        include 'arm64-v8a'
        universalApk false  // 是否打universalApk,改为true 就一次打2个
    }
}

Android ABI

不同的 Android 设备使用不同的 CPU,而不同的 CPU 支持不同的指令集。CPU 与指令集的每种组合都有专属的应用二进制接口 (ABI)。

Android 设备支持的 ABI 类型如下:

ABI支持的指令集备注
armeabi-v7aarmeabi
Thumb-2
VFPv3-D16
与 ARMv5/v6 设备不兼容。
适用于基于 32 位 ARM 的 CPU,逐渐被弃用。
arm64-v8aAArch64适用于基于 ARMv8-A 的 CPU,支持 64 位 AArch64 架构,当前主流。
x86x86 (IA-32)
MMX
SSE/2/3
SSSE3
不支持 MOVBE 或 SSE4。
一般是模拟器。
x86_64x86-64
MMX
SSE/2/3
SSSE3
SSE4.1、4.2
POPCNT
一般是模拟器。

这里主要看 arm 架构的,新的架构能够兼容旧的 abi 对应的 so,例如 arm64-v8a 架构的 CPU 能够运行 armeabi-v7a 架构的
so,反过来不行,这就是为什么现在很多 APP 只包含 armeabi-v7a 的包却能够在最新的 CPU 上运行。如果以后的 CPU 不再兼容旧的架构了的话,现在只包含 armeabi 或者 armeabi-v7a 架构的 APP 就不能再运行了。

https://segmentfault.com/a/1190000041297242

安卓官方文档https://developer.android.com/build/configure-apk-splits?hl=zh-cn

Leave a Comment

邮箱地址不会被公开。 必填项已用*标注