现在的手机基本上都是64位架构,32位apk在Google 商店上已经被限制,近期国内的一些手机应用商店也表示将限制32位apk的上架,

主要原因还是在性能方面, "

最新的骁龙8 Gen 1芯片,它包括一个基于Cortex-X2的超大内核,三个基于 Cortex-A710 的大核,以及四个基于Cortex-A510的小核。

其中,只有三个大核兼容32位应用。这样一来,平时运行很多日常应用时,本来靠小核就够了,但由于这些应用是32位的,所以必须要用大核来运行。大核带来了更高的能耗,耗电就变得很快。

联发科的天玑9000芯片采用的是和骁龙8 Gen 1一样的Armv9架构,因此采用这两款旗舰芯片的手机都面临着同样的问题。

"

使用 dumpsys package p 可以查看到应用的primaryCpuAbi信息,

如 primaryCpuAbi=arm64-v8a 表示是64位,

可以看到,在应用安装的时候,PackageManagerService识别了应用的primaryCpuAbi信息,并储存了下来。

在64位手机上,apk会默认是64位应用,如果apk里只使用了32位的so库,只能被识别为32位应用。

在应用打开的时候,会根据primaryCpuAbi信息来决定使用zygote32还是zygote64来fork子进程,

这个知识点把应用安装和应用打开,PMS和AMS串联起来了,对加深PMS,AMS的理解很有实际意义。

对于厂商来说,只是限制32位apk上架,肯定不会禁用32位apk,因为用户可能不在乎性能,就是需要使用特定的apk。