2022年,安卓手機為什么要全面普及64位應用?
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位。
安卓的開放軟件生態系統,直接導致了軟件部分的碎片化,想統一并非易事。
此外,從現在安卓軟件來看,目前的安裝包體積越來越大,這就直接導致安裝時需要消耗的內存、運行時占用的系統資源以及對于系統的性能要求也越來越高。采用64位系統可以讓單線程處理超過4GB運行內存,這對于處理一些超大型游戲、高碼率高規格的視頻文件來講,可以更充分的調動手機內硬件,讓機內硬件得到充分發揮。
這就可以解釋,為什么智能手機運行內存越來越高,動輒高達12、16GB,處理器頻率也越來越高。這一切都是保證64位軟件可以流暢運行,但這也帶來一些負面因素,比如功耗問題以及超大核處理大型軟件帶來的發熱等等。
總之,2022年或許會成為安卓大規模普及64位應用的“元年”,硬件倒逼軟件升級將是常態,不過歸根到底,還是需要行之有效又不一刀切的舉措,才能讓安卓生態良性健康發展。