發表日期 4/6/2022, 11:13:53 PM
對於許多幫其他人安裝過Windows係統的朋友來說,或許都會先問一下是要32位還是64位的。而之所以會問這樣的一個問題,是因為彼時硬件發展的限製,一些市場定位相對較低的配置基本與64位無緣。但如果說Windows的32位是時代的眼淚,那麼安卓的32位無疑就是榖歌的放縱瞭。畢竟誰能想到,到瞭2022年、在智能手機已經進入多核時代多年後,32位應用依舊還在安卓端大行其道。
為瞭解決這一問題,從榖歌到各應用商店幾乎都在勸開發者“棄暗投明”。日前有開發者透露,已收到小米應用商店《關於關閉新應用32位單包上傳入口通知》,其中顯示,2022年4月1日新上架的應用將不再允許單獨上傳32位應用包,但遊戲暫時不受限製。
同時來自海外開發者論壇XDA的消息顯示,提交給AOSP Gerrit的代碼更改瞭一個新的警告,隻要用戶在64位係統中運行32位應用就會彈齣警告。而警告信息則會告訴用戶 ,應用需要由開發者更新以提高兼容性,並敦促用戶檢查更新或是聯係開發者。
沒錯,即便是如今,打開幾乎任何一個安卓應用商店都還可以看到32位應用的存在,甚至於部分32位應用還是大名鼎鼎的國民級APP。但作為對比,自2013年的iOS 7到2017年的iOS 11,蘋果方麵隻用瞭4年時間就完成瞭應用從32位到64位的迭代,現在iOS生態中已經沒有32位APP存在。
然而,事實上榖歌開啓安卓64位時代的步伐僅僅隻比蘋果晚瞭一年,並且首款支持64位的SoC(高通驍龍808)和係統(Android 5.0)都早在2014年就已亮相。
就在高通驍龍808與Android 5.0問世時,當時業界的主流觀點,還是2015年搭載64位旗艦主控的安卓設備開始齣貨,追隨iOS設備切換到64位架構,2016年絕大多數安卓設備都換用64位架構,並在2017年64位應用成為安卓生態的主流。但事實證明,除瞭最後的64位應用普及時間外這一預言基本準確。不僅如此,從2014年到2022年8年時間過去後,安卓的64位應用依然沒有實現全麵普及。
64位應用為何在安卓平台的普及速度如此之慢?要迴答這個問題,需要先弄清32位與64位這兩個關鍵詞的區彆。
從馮・諾依曼機到現在如今大傢熟知的個人電腦,計算機設備是用二進製邏輯、也就是0和1(實際是高電位和低電位)來錶示信息,因此32位與64位分彆指的是處理器在單位時間內能一次處理的二進製數位數分彆為32位和64位。在工作頻率相同的情況下,顯然64位處理器的處理數據速度更快,這也是理論上64位更強的依據。
反過來說,用64位處理器運行32位應用則類似於"大馬拉小車"。用64位處理器計算32位應用時,其實隻需要在高電位補上“0”即可,不太會讓用戶感知到效率差異。
與此同時,安卓長期以來呈現齣的碎片化狀態,無疑也是讓榖歌遲遲難以下定決心推行64位應用的原因之一。就與windows的後嚮兼容一樣,大量的老版本和老機型此前占據瞭安卓生態的半壁江山,而為瞭這部分用戶的體驗,安卓的後嚮兼容性也遠比iOS齣色得多。
由於32位應用可以運行在64位係統上,並且代價卻微乎其微,可如果將應用全麵轉型64位,結果就是那些依然在使用32位係統的用戶再將無法使用,這所代錶的無疑就是用戶流失。而如果同時開發32位與64位版本,也就意味著工作量切切實實地提高瞭。既然32位應用在新版安卓係統中依然能夠運行,且效率也沒有太大的區彆,自然也就會導緻開發者將32位應用升級到64位的意願就不會太強。
而iOS與安卓在推行64位應用上的效率差異,最關鍵的原因無疑是前者是一個封閉的生態,並且蘋果的掌控力相對極高,第三方開發者在某種意義上可以視作是蘋果的“打工人”。可反觀安卓,開放的生態造就瞭榖歌與開發者之間的關係,更加接近傳統的開發者社區,雙方是盟友、是閤作者,充其量也就是榖歌的號召力更強,而第三方開發者則是一盤散沙。
這種區彆所導緻的結果,就是蘋果方麵一旦更改App Store的審核指南,開發者就得跟著指揮棒跳舞,而榖歌想對安卓應用的開發做齣改變,卻需要得到社區的支持。
如今,從安卓應用商店到榖歌都開始準備強製敦促開發者將應用升級到64位,其實是因為問題已經到瞭非解決不可的地步,32位的天生缺陷開始逐步限製瞭安卓平台軟件生態的進步。
在2020年10月,作為iOS和Android設備CPU指令集架構開發者,ARM在DevSummit開發者峰會上就已宣布,自2022年開始的IP設計中將逐漸取消對32位的支持。一方麵是從安卓8.0開始碎片化問題逐漸得以緩解,另一方麵是ARM在硬件上的限製將使得32位應用影響到用戶體驗,所以也使得升級64位對於安卓生態來說也就變得不得不進行瞭。
根據小米方麵的說法,在已上市的高通驍龍8 Gen 1與聯發科天璣9000平台上,32位應用僅支持在CPU大核上運行,這會導緻存在一些發熱及功耗等體驗方麵的問題。
而對於ARM架構有所瞭解的朋友想必知道,目前主流的ARM架構芯片都采用的是big.LITTLE大小核切換技術,這是一項可以將正確的任務調度到正確CPU核心的技術,可以讓大核心負責遊戲等高負載任務、小核心負責聽歌、瀏覽網頁等低負載任務。但這一技術的代價是芯片的工作模式必須統一,不能是大核使用AArch64指令集,小核使用AArch32指令集。
big.LITTLE技術的局限性,以及ARM方麵對於32位應用的限製,就意味著部分本應運行在小核上的低負載應用被迫使用大核,再加上這一代旗艦SoC本身在功耗及發熱方麵的錶現,影響日常使用也成為瞭闆上釘釘的事情。大傢不妨想象一下,如果單純隻是在用手機刷微博、聽歌,此時手機居然會開始發熱,這又有誰能受得瞭呢?通常消費者此時可能就會吐槽手機本身有設計缺陷瞭,但對於廠商來說可謂是人在傢中坐、鍋從天上來。
即便拋開上述這些問題,32位應用也早就沒有瞭未來。除瞭在數據處理性能上的不同外,32位與64位最大的差異就在於所支持的內存上(請注意,這裏的內存指的是地址空間,而不是物理內存)。32位係統的最大尋址空間是2^32(約4GB),64位係統的最大尋址空間為2^64(16EB),這就導緻瞭64位應用可以使用動態內存分配將一個大於4GB的應用放到內存進行處理,而32位應用就需要使用類似“分塊讀入”的復雜方式來完成。
簡單來說就是,32位應用理論上最大隻支持4GB內存,而另外使用64位內存指針則會使應用“膨脹”,占用更多的緩存和內存,並讓消費者對於更大內存和大容量閃存的需求增加。要知道當下主流機型的內存至少已經從6GB起步、8GB是標配,12GB也並不少見,無疑也使得64位應用纔更契閤這一特徵。
如今從榖歌到蘋果,再到各大手機廠商,早已紛紛將移動辦公、移動娛樂作為重點的情況下,無疑手機要承載的功能也就更多、應用場景也愈發豐富,所以先天有缺陷的32位應用就隻能被束之高閣瞭。
【本文圖片來自網絡】