为什么
- 2022 armv9芯片新机出货,不兼容32位,出现卡顿闪退等问题
- 64位性能更好
- 手机硬件升级,存储更大,应用包体积不敏感
应用市场的政策
Google Play声明
自 2019 年 8 月 1 日起,您在 Google Play 上发布的应用必须支持64 位
2021年 8 月 1 日, 无法搜索到32位,无法更新 升级版本仍是32位的版本
小米/OPPO/vivo/应用宝/百度手机助手
为更好地提升APP性能体验,降低APP功耗影响,小米应用商店与OPPO应用商店、vivo应用商店共同推进国内安卓生态对64位架构的升级支持。
行业适配节奏如下:
- 2021年12月底:现有和新发布的应用/游戏,需上传包含64位包体的APK包(支持双包在架,和64位兼容32位的两个形式,不再接收仅支持32位的APK包)
- 2022年8月底:硬件支持64位的系统,将仅接收含64位版本的APK包
- 2023年底:硬件将仅支持64位APK,32位应用无法在终端上运行
华为
根据华为开发者联盟的消息,华为日前发布通知,要求开发者加快淘汰32位应用,具体分为两个阶段,详细如下:
1、自2022年2月1日起,在华为应用市场新上架/升级的应用及游戏,必须包含64位版,华为应用市场不再接收仅包含32位版的应用;
2、自2022年9月1日起,华为应用市场不再接收包含32位版的应用(即只能提交64位版)。
如何适配
module build.gradle 指定abi
统一包
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
多个包
//限定universalApk 包含apk
ndk {
abiFilters 'armeabi-v7a', 'x86' , 'arm64-v8a'
}
splits{
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
def isReleaseBuild = false
gradle.startParameter.taskNames.find {
// Enable split for release builds in different build flavors
// (assemblePaidRelease, assembleFreeRelease, etc.).
if (it ==~ /:app:assemble.*Release/) {
isReleaseBuild = true
return true // break
}
return false // continue
}
enable isReleaseBuild
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for x86, armeabi-v7a, and mips.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "armeabi-v7a", "arm64-v8a"
// Specifies that we want to also generate a universal APK that includes all ABIs.
universalApk true
}
}