落後近五年Android與各廠商開始全面轉向64位運算
事情的起因還得從兩款新機開始說起。前陣子在測評 realme GT2 Pro 和小米12 Pro 這兩款搭載驍龍8 Gen 1 處理器的新機的時候,注意到它們都開始“ 排斥” 起了32 位的應用。
首先是Realme GT2 Pro,每次我從第三方渠道安裝應用,只要係統檢測到它是32 位,就會在界面彈出“ 此安裝包為32 位,不建議安裝 ” 的風險提示:
想要繼續安裝這些應用當然可以,但是它們在運行過程中如果出現卡頓或者閃退等問題就別怪手機有 Bug 了,是你安裝的應用是32 位的緣故~
然後是小米12 Pro,打開手機自帶應用商店,你會發現小米在商店首頁專門設置了一個醒目的“ 64 位應用專區 ”,方便我們直接在裡邊下載64 位應用:
一旦遇到你要下載的應用是32 位,它就會在頂部彈出“ 該應用未適配本機64 位處理器” 的提示:
同時在應用升級界面,我們還能通過藍色標籤清楚區分這些正在升級的應用是32 位還是64 位版本:
然而如果換做是驍龍8 Gen 1 之前的機型,比如搭載驍龍888 的小米11,就根本沒有對應用的版本做出如此嚴格的區分,更別提在下載或者安裝應用的時候會跳出風險提示了:
之所以這兩家手機廠商在新機上要這麼做,其實也是迫於無奈。
這是因為在驍龍8 Gen 1 處理器所擁有的8 個CPU 核心中,只有3 個2.5GHz 的 A710 大核兼容32 位應用,其餘1 個3.0GHz 的X2 超大核和4 個1.8GHz 的A510 中核則均不兼容32 位應用。
這就導致那些搭載驍龍8 Gen 1 的手機在運行32 位應用時,只能用到8 核中的其中3 個大核,其它5 核則是處於圍觀吃瓜狀態,根本不參與運算工作。
根據小米和realme 的說法,如果這個32 位應用是一個多線程程序,它的性能就會受到可使用核心數的限制,同時也會導致功耗的增加,嚴重一點甚至還會造成應用的閃退、閃屏、音頻異常或者卡頓。
很不幸,簡單看了下,發現在我之前下載到手機裡的兩百多個應用裡,有17.4% 的應用還是32 位版本,其中不乏中國銀行、美團、浙里辦、滴滴出行、李跳跳等一些我平時經常會用到的應用:
這意味著要是我現在就把手機換成搭載驍龍8 Gen 1 的新機,就要注意這些應用在新機上的兼容問題。
差友們看到這裡先別急著罵高通吃飽了撐的沒事找事,把32 位強制限制在大核上運行的決定不是高通做的,而是比它更上游的處理器設計公司ARM。
是ARM 在它去年推出的Armv9 新架構裡,取消了超大核和中核對於32 位應用的兼容,而驍龍8 Gen 1 CPU 部分使用的架構恰恰就是Armv9。
除了驍龍8 Gen 1,天璣9000 和Exynos 2200 處理器的CPU 採用的也是 Armv9 架構,32 位應用到了這兩款處理器上同樣只能用大核運行。
更壞的消息是什麼呢?到2023 年,不管是大核、中核還是小核,ARM 所有的內核都將只支持64 位,到那時32 位應用會變得直接不能用……
也正是基於這個原因,廠商們不著急才怪,注意到現在包括華為、vivo在內的很多廠商都已經開始催開發者趕緊把自家的32 位應用升級成64 位:
如果最近有差友正在考慮換機,那就可以先在舊手機上下載一個名為“ LibChecker ” 的軟件來看下自己平時常用的軟件是32 位版本還是64 版本。
要是32 位版本的軟件佔比比較多,那就得衡量下是否值得在這個過渡時期換機。
不過話說回來,ARM 做出的這個決定雖然短期內確實會對32 位應用在新手機上的使用造成影響,但是從長期來看,這絕對是一件好事。
要知道高通在2013 年發布的驍龍410,就已經是一款64 位的處理器;並且Google在2014 年發布的Android 5.0,也已經是一款64 位的Android系統。
這代表Android手機從很早開始,無論是在硬件層面還是系統層面都已經是64 位,運行起64 位應用完全沒問題。和電腦上的情況一樣,一款應用要在手機上運行,首先需要把數據從硬盤加載到內存方便CPU 訪問。
而32 位和64 位應用中的“ 位”,指的就是它在這個過程中可供CPU 尋址的內存空間的大小。相較於32 位應用最大隻能調用4G 內存( 2^32 Bytes=4G ),64 位應用最大的優勢就是能調用更大的內存,從而使應用的加載、響應速度變更快。
所以我們可以看到那些比較吃性能的應用比如各種大型手游,早就已經是64 位版本:
就算有些應用不需要用到那麼高的性能,為了更好的用戶體驗和後續功能的開發,某些大公司也會未雨綢繆把自家應用儘早的升級到64 位。小米產品經理說把應用更新到64 位續航明顯提升 ▼
也正因為64 位是大勢所趨,所以早在2013 年,蘋果就先Android一步在iPhone 5s 上使用上了64 位的A7 處理器,那時候高通第一款64 位處理器驍龍410 要到年底才發布。而且它在2015 年就宣布所有的iOS 應用都必須支持64 位,否則就不允許上架到App Store:
到了2017 年,蘋果發布的iOS 11 就徹底取消了對32 位應用的支持,它這麼做的目的就是要逼開發者只開發64 位應用。
這時蘋果封閉生態圈的優勢就體現出來了。要么就听我的話乖乖開發64 位應用,要么就從iOS 上滾蛋,在蘋果的強勢執行下,現在我們在iPhone 上用到的所有應用,其實全部已經是64 位版本。
而Android陣營之所以還有這麼多32 位應用的存在,要怪就怪Google還有各大Android應用市場太遷就,就是不願意像蘋果那樣狠下心來全面禁止32 位應用。
Google曾經在2019 年8 月就要求上架到Play Store 的應用,除了提供32 位版本外,還必須提供64 位版本,然而它卻留了 “ 漏洞”,讓開發者可以把32 位應用輕鬆變成同時兼容32 位與64 位的版本:
到了2021 年8 月,Google雖然不再允許64 位設備下載32 位應用,但它還是沒有在自家Android 系統裡下定決心把32 位應用給直接禁掉,儘管全球只剩2% 左右的移動設備是32 位的……
其它應用商店就更不用說,一直都是跟著Google屁股跑,小米應用商店、OPPO軟件商店、vivo 應用商店等幾大商店直到去年才開始大力推64 位應用:
連Google和各大應用商店都這麼不積極,那些製作小應用的個人開發者就更不用說,根本沒動力把32 位應用升級到64 位給自己額外增加工作量好吧。畢竟32 位應用又不是不能用,更何況我開發這些小應用很多時候還是靠愛發電的呢……
俗話說得好有時為了大局著想往往需要有人站出來當大惡人,在這次Android全面擁抱64 位生態的進程中,扮演惡人角色的或許就是ARM 吧。
事實上,自ARM 發布首款支持64 位的Armv8 架構以來,已有近十年的時間,期間高通、華為、聯發科基於Armv8 推出的移動端處理器數不勝數。華為甚至買下了Armv8 架構的永久授權 ▼
估計ARM 自己也很鬱悶,都過去這麼久了,Android竟然還沒徹底淘汰32 位應用……
好在就目前廠商們的動作來看,ARM 在新架構中把32 位應用限制在大核運行的效果可以說是非常明顯,接下來就看那些開發者們的努力了~
文章最後,作為一名多年的Android老用戶,還是希望那些原本只存在於Android上的好用軟件可一定要適配64 位啊,不然就少了個繼續用Android的理由。
來源:差評