來源:品玩
2021 年底,國內安卓五大應用商店,共同宣布了將會推進國內安卓生態對于 64 位應用的支持。從這五大廠商發布的聯合倡議來看,只要在 OPPO、vivo、小米、騰訊應用助手、百度手機助手上傳或者更新 APP,都需要在 21 年 12 月底前上傳 64 位格式,不再接受 32 位的 APK,而后者更是在 2023 年直接無法在支持 64 位系統上運行。
而華為則通過華為開發者聯盟郵件通知所有開發者,華為將會分階段淘汰 32 位應用,并全面推行 64 位版本:
2022 年 2 月 1 日起,在華為應用市場新上架 / 升級的游戲及應用,必須包含 64 位版本,華為應用市場不再接收僅包含 32 位版本的應用;9 月 1 日起,華為應用市場將不再接收包含 32 位版本的應用。
華為開發者郵件 圖片來自網絡
讓手機終端廠商這樣 " 迫在眉睫 " 的推廣 64 位應用最主要的原因是來自上游供應鏈的壓力。比如之前 ARM 就宣布,將會從 2022 年開始,旗下芯片產品之中 CPU 的 Cortex 大核將取消對 32 位的支持,這是上游廠商在 " 逼 " 下游廠商全面支持 64 位應用。
安卓的 64 位之路并不順利
關注手機硬件的用戶應該知道,其實早在 Android 5.0 系統發布時,就已經支持 64 位應用,當時處理器為高通驍龍 410,這也是高通首款支持 64 位的處理器,時間為 2013 年,而到 2022 年才 " 強制 " 實現到 64 位,這與谷歌在 2019 年要求開發者在 google 商店中提交 64 位應用整整推遲了 3 年。
雖然當時谷歌已經通過集成最新開發工具 Android Studio,來打開的 APP 直接默認為 64 位 so 文件,想以這種 " 強制 " 性的新規來約束開發者。但這樣做似乎并沒有引起足夠的重視,開發者依舊可以通過修改 Android Studio 的配置文件使得其在打包 so 文件時可以使用 32 位來 " 繞過 ",國際環境如此,國內安卓生態環境就不一樣了。
Play 商店、應用匯更新的 APP 都不同
不僅手機廠商有自己的官方軟件商店,還有像百度軟件管家、酷安、騰訊手機助手等等這樣的第三方市場。如果手機中安裝了非手機市場的官方版,可能還會在多個商店的版本之間 " 反復橫跳 ",就更別提 64 位適配了,能裝個純凈的官方應用都不是一件容易的事情。
總之,官方、非官方、固件版本混亂是安裝軟件生態的通病。
其實到 2021 年,高通 8 Gen 1 和聯發科 9000 處理器出來之前,都缺乏一套行之有效的方式來從 " 根兒上 " 解決這個問題。
剩下的就只有從 " 底層 " 杜絕這個情況,用硬件生態來進行 " 管控 "。比如高通、聯發科于去年年底發布的驍龍 8 Gen 1 和天璣 9000,除了具有非常強勁的性能提升這個大眾可以 " 感知 " 的部分:整個框架升級到了 ARM 最新一代 Cortex-X2 超大核、Cortex-A710 大核和 Cortex-A510 小核架構外,最大變化是更為底層的 " 提升 ",即指令集就采用了 ARM V9。
ARM V9 和上一代 V8 一樣,都為純 64 位指令集,Cortex-X2 超大核與 Cortex-A510 小核只支持(向下兼容 V8)64 位,只有 " 中核 "Cortex-A710 大核兼容 32 位的 V7 指令集。
換句話來講,如果這款軟件還是 32 位的,那么運行在驍龍 8 Gen 1 和天璣 9000 這類 V9 指令集的新架構處理器新機上,就只能被鎖定在 A710 上運行,這樣手機不管是鎖屏還是打開 " 性能模式 " 運行,應用始終都處在 A710 這個比上超級大核性能不足,比下小核也不省電的核心上。
64 位到底有啥提升?
最直接的優勢,就是能從數字上直接看出來,即 64 位處理器性能要更強,vivo 曾經表示 " 支持 64 位設備是安卓應用程序利用超過 4GB RAM 地址空間、在數據處理中利用更寬寄存器和更高精度,以及獲取強化安全特性的唯一途徑。"
在相同頻率下,64 位處理器可以處理 8 字節數據,而 32 位只能處理 4 字節數據,處理數據更快,此外在尋址空間上也有非常大差距,例如 32 位尋址空間為 2 的 32 次方,大約支持 4GB,而 64 位是指數級別增長,為 2 的 64 次方,并支持動態內存分配。
總而言之,64 位處理器、支持 64 位應用系統以及 64 位應用共同協作,這軟件上的性能 " 三架馬車 " 并駕齊驅,才能讓運行效率得到提升。
既然 64 位應用能夠帶來性能提升,那為什么普及來就如此費勁?
除了前面提到的軟件版本、下載渠道混亂外,一大原因是安卓對于 " 舊設備 " 的兼容性非常好,比如雖然谷歌通過各項措施來讓開發者推出 64 位的應用,但仍然保留了對于 32 位應用的兼容,甚至在自家 Chrome 瀏覽器的下載頁面也提供 32 位選擇 .
另外對于開發者而言,維護運營成本也是制約 64 位普及的 " 絆腳石 ",例如開發者如果只開發 32 位應用,它是完全可以運行在 64 位處理器上的,只不過不能以最佳狀態運行而已。
但如果只開發 64 位應用,對于一些舊設備來講就根本無法運行,有流失用戶風險。而 32 位和 64 位開發測試需要獨立進行,對后續維護成本也是一種負擔。
此外還有重要一點,開發者開發安卓類應用并不會單純使用純粹的 Java 層開發,而是利用 Android NDK 來讓 Java 與 C++ 結合,而在 C++ 中基本都是團隊運作,這對于小團隊開發者而言,維護和后續安全性都是問題。
2022 年了,安卓的 64 位設備和 APP 發展的怎么樣?
既然聯合倡議已經公布,安卓手機廠商執行的怎么樣?
根據友盟 + U-APM 的數據顯示,截止到 2021 年 12 月,市面上 64 位和 32 位設備所占比例為 65% 和 35%,而根據友盟 + U-APM 的移動應用性能監控平臺顯示,32 位設備的應用崩潰現象是 64 位設備的 4.8 倍,不論是設備所占比還是穩定性,64 位應用都是趨勢。
而就目前手機終端設備內置的官方應用商店也好,第三方應用市場也罷,華為、OPPO 應用商店都不會直接標識出升級后的應用是否為 64 位,只有小米在應用商店會清晰地標識出哪款軟件在升級時為 64 位。
左邊為 vivo 應用商店 右側為華為應用商店 都沒有標注 64 位 APP
例如我用的華為手機就需要借助第三方程序 LibChecker 來查詢機內應用,目前機內應用數量為 312 個,大約有 66% 的應用為 64 位,29% 的應用為 32 位。
LibChecker 查詢 64 位軟件基本上都是 google 系和國際 APP 32 位則為國產軟件居多 手機為 Mate 40 Pro EMUI 11 版本
但安卓應用升級到 64 位后,也并不意味著會比 32 位好用,據知乎網友嗜金水狙反應,在 Play 商店中的 QQ 雖然是 64 位版,但有嚴重 bug 無法使用,也沒有夜間模式,沒有簡潔模式。
圖片來自知乎網友嗜金水狙
而 Play 商店中的 QQ 音樂老版本為 64 位,新版本又更新回 32 位。
左側小米 12 Pro 百度地圖為 64 位 右側為 32 位 打開速度沒有明顯變化
安卓的開放軟件生態系統,直接導致了軟件部分的碎片化,想統一并非易事。
此外,從現在安卓軟件來看,目前的安裝包體積越來越大,這就直接導致安裝時需要消耗的內存、運行時占用的系統資源以及對于系統的性能要求也越來越高。采用 64 位系統可以讓單線程處理超過 4GB 運行內存,這對于處理一些超大型游戲、高碼率高規格的視頻文件來講,可以更充分的調動手機內硬件,讓機內硬件得到充分發揮。
這就可以解釋,為什么智能手機運行內存越來越高,動輒高達 12、16GB,處理器頻率也越來越高。這一切都是保證 64 位軟件可以流暢運行,但這也帶來一些負面因素,比如功耗問題以及超大核處理大型軟件帶來的發熱等等。
總之,2022 年或許會成為安卓大規模普及 64 位應用的 " 元年 ",硬件倒逼軟件升級將是常態,不過歸根到底,還是需要行之有效又不一刀切的舉措,才能讓安卓生態良性健康發展。