愛奇藝App架構升級之路——64位適配探索與實踐

背景
?隨着手機硬件的不斷髮展,近兩年的新式手機已經全部採用了64位CPU,64位真的比32位快嗎?實際上32位和64位的差異主要體現在內存尋址上,32位最高只支撐4GB內存,而64位則能夠最高支撐128GB內存。

目前三星、華爲、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】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章