Categories
程式開發

爱奇艺App架构升级之路——64位适配探索与实践


背景
?随着手机硬件的不断发展,近两年的新式手机已经全部采用了64位CPU,64位真的比32位快吗?实际上32位和64位的差异主要体现在内存寻址上,32位最高只支撑4GB内存,而64位则能够最高支撑128GB内存。
爱奇艺App架构升级之路——64位适配探索与实践 1
目前三星、华为、VIVO、OPPO等手机厂商应用商店已经支持32位和64位,但尚未强制要求,然而从长远的App框架角度来看,64位爱奇艺App给予的其实是更加广阔的创新空间,经过兼容更多更新的硬件来提高软件的全体性能,随着64位CPU逐步成新式手机的主流,针对适配64位的应用软件将越来越遍及。

1 64位适配的原理

64位适配,就是令APP在支持64位系统的设备上启动64位进程来运行。下面详细讲解一下如何让APP运行在64位进程上。

  1. Android手机系统在启动的过程中,会根据设备的ro.zygote属性值决定启动哪类Zygote。如果是支持64位系统的设备,会有两个Zygote(一个32位,一个64位)进程同时运行。
  2. 在APP安装的过程中,PMS里面的scanPackageDirtyLI方法通过遍历APK文件夹里面的lib下面的so库根目录,再结合该手机硬件支持的abilists列表,来决定primaryCpuAbi的值,具体请参考下图2-1的时序图:
  3. 在APP启动的过程中,AMS根据前面得到的primaryCpuAbi的值作为参考,通过调用Process的start()方法来确定,该APP是从64位还是32位的Zygote进程fork出子进程。如果子进程来自64位Zygote,该APP就运行在64位进程。

原文链接:【https://www.infoq.cn/article/8waKuU1WUVbG0t3D3jIm】。未经作者许可,禁止转载。