對有一定經(jīng)驗(yàn)的 Android 玩家來說,在下載 App 這件事情上,Play 商店依然是那個值得排除萬難、能上就上的選擇,沒有之一。坊間還流傳著各種關(guān)于「Play 版」應(yīng)用的傳聞:Play 版應(yīng)用有 FCM 推送、Play 版應(yīng)用更省電、Play 版應(yīng)用沒廣告、Play 版應(yīng)用有更適合現(xiàn)代設(shè)備的 64 位版本……
這種「Play 版更好」的說法究竟是科技圈的都市傳說還是確有其事?為什么國產(chǎn)應(yīng)用在 Play 商店中正變得越來越少了?
今天這篇文章,我們從一個對普通用戶而言可能會有點(diǎn)陌生的概念——目標(biāo) API 級別入手,希望能為你解答上面所提到的一部分問題。
Android 有幾種寫法?
對 Android 系統(tǒng)而言,同一個系統(tǒng)版本一般都對應(yīng)了不止一種名稱,比如對消費(fèi)者而言 Android 12 是 Android 12,或者根據(jù) Google 按照字母表順序命名的習(xí)慣叫做 Android S;而如果 2019 年 Google 沒有官宣取消甜品代號命名方式,Android 12 的甜品代號 Snow Cone 應(yīng)該也會更加為大眾所熟知。
針對開發(fā)者,每個 Android 版本還會被分配到一個唯一的整數(shù)標(biāo)識符,這個整數(shù)標(biāo)識符就是 API 級別。
針對這些不同的命名方式,GitHub 上也有人做了一個清晰明了的網(wǎng)站,有興趣的朋友可以去看看。從網(wǎng)站提供的表格不難看出,和一個甜品代號可以對應(yīng)多個 Android 版本不同——比如 Android 7.0 和 Android 7.1 都可以叫「牛軋?zhí)恰埂?/span>API 級別和 Android 版本是嚴(yán)格對應(yīng)的。
API 級別 32 只可能對應(yīng) Android 12L,Android 12L 的 API 級別也只能是 32。對于市面上運(yùn)行系統(tǒng)版本千差萬別的 Android 設(shè)備而言(你同樣可以在上面那個網(wǎng)站中看到不同 Android 版本的累計用戶占比),API 級別也成為了開發(fā)者辨別用戶系統(tǒng)版本和應(yīng)用運(yùn)行環(huán)境、保證應(yīng)用兼容性的重要參考。
具體而言:
- 最低 API 級別:代表了應(yīng)用可以運(yùn)行的最低系統(tǒng)版本。如果一款應(yīng)用的最低 API 級別為 28,那么這款應(yīng)用只能保證在 Android 9 及以上系統(tǒng)版本中的兼容性
- 目標(biāo) API 級別:代表了應(yīng)用被設(shè)計用于運(yùn)行的系統(tǒng)版本。如果一款應(yīng)用的目標(biāo) API 級別為 32,則代表這款應(yīng)用被設(shè)計用于在 Android 12L 中運(yùn)行,因此也理所當(dāng)然地支持 Android 12L 引入的新特性
參考鏈接:
- 了解 Android API 級別 – Xamarin | Microsoft Docs
- API Levels
目標(biāo) API 級別與體驗(yàn)
聊完概念我們再來聊聊現(xiàn)象。
即便不談應(yīng)用商店本身的使用體驗(yàn),在能不能下到好應(yīng)用這一核心需求上,Google Play 和各種國內(nèi)應(yīng)用商店都有著天壤之別。
對國內(nèi)應(yīng)用商店而言,兼容各種魚龍混雜、質(zhì)量參差不齊的應(yīng)用才是頭等大事。畢竟為了賺錢,大部分 Android 設(shè)備默認(rèn)的應(yīng)用商店也都是自家的,如果用戶發(fā)現(xiàn)某個應(yīng)用無法正常運(yùn)行,即便這個應(yīng)用本身做得非常糟糕,他們往往也會將「鍋」扔給手機(jī)廠商。一傳十十傳百,這家廠商的手機(jī)在這位朋友的圈子里就會被打上「不推薦」的評級。
Google Play 商店不一樣。
在更廣泛的 Android 生態(tài)里,大多數(shù) Android 設(shè)備都會搭載 GMS 套件、不同廠商的 Android 設(shè)備也能從同一個 Google Play 商店中獲取應(yīng)用。因此 Play 商店作為由 Google 直接控制的應(yīng)用商店,需要做好的就是平臺本身:如何規(guī)范應(yīng)用行為、如何保證設(shè)備安全、如何進(jìn)行高效分發(fā)……
關(guān)聯(lián)閱讀:必須兼容 PD 快充,Google 為 Android 設(shè)下了這些新標(biāo)準(zhǔn)
相對而言,Google 的地位也更加主動一點(diǎn),如果某款 Play 商店的應(yīng)用無法正常運(yùn)行,用戶只會將責(zé)任歸咎于手機(jī)和手機(jī)系統(tǒng)本身,或是在商店里留個一星差評罵罵開發(fā)者。
解決方案藏在目標(biāo) API 級別這個概念里。
通過讀取應(yīng)用開發(fā)者為應(yīng)用聲明的 targetSdkVersion 清單屬性,Android 系統(tǒng)得以判斷這款應(yīng)用的目標(biāo) API 級別是多少,進(jìn)而確定哪些新特性可以在這款應(yīng)用中啟用、哪些特性則需要做適當(dāng)?shù)募嫒萏幚怼?/span>
以前幾年大家熱切期盼的「沙盒」機(jī)制分區(qū)存儲為例,應(yīng)用必須首先通過清單屬性告訴 Android 系統(tǒng)「我的目標(biāo) API 級別是 30,是支持最新特性的好應(yīng)用」,系統(tǒng)在讀取到這一聲明后才會為應(yīng)用啟用分區(qū)存儲機(jī)制;而對當(dāng)時需要時間過渡的應(yīng)用而言,它們在告訴系統(tǒng)自己的目標(biāo) API 級別不夠 30 之后,系統(tǒng)則不會為這些應(yīng)用啟用「沙盒」機(jī)制。
所以在 Android 開發(fā)者網(wǎng)站所列出的各種 API 接口、聲明數(shù)值、字符串等信息旁,也都會有一行小字說明這個功能是在哪一個 API 級別中所加入的;在 Android 13 的介紹中,Google 也有一個專門的頁面來說明目標(biāo) API 級別在 Android 13 及以上(另一種說法是「以 Android 13 或更高版本為目標(biāo)平臺」)的應(yīng)用將受到哪些行為變更影響。
兩年為期、相對嚴(yán)格
我們可以將 2017 年看作是 Google 開始著手治理 Android 系統(tǒng)「碎片化」問題的開始,這一年,Android 系統(tǒng)本身引入了著名的 Project Treble,讓那些有開發(fā)實(shí)力的團(tuán)隊(duì)在系統(tǒng)大版本更新這件事情上直接轉(zhuǎn)入了「快車道」。
但系統(tǒng)更新僅僅是一方面,系統(tǒng)更新帶來的各種新功能,除了手機(jī)廠商的配合,還是需要應(yīng)用開發(fā)者這邊積極響應(yīng),才能將 Google 所預(yù)想的 Android 體驗(yàn)帶到用戶手中。
因此也是在 2017 年,Google 開始通過 Play 商店對 Android 應(yīng)用的最終體驗(yàn)進(jìn)行干預(yù),首先在 64 位應(yīng)用支持這件事情上開始了籌備。2021 年 8 月,經(jīng)過四年多的籌備和過渡,Play 商店中的所有應(yīng)用都具備了向 64 位設(shè)備提供對應(yīng)支持的能力。
同時,近幾年 Play 商店在 API 級別上的規(guī)范也逐漸成型。
總體而言,對于那些需要在 Play 商店中持續(xù)提供更新的大部分應(yīng)用,Google Play 商店一般會提供一年左右的時間來讓開發(fā)者針對最新的目標(biāo) API 級別進(jìn)行適配。
這里 Play 商店將應(yīng)用分成了三類:新應(yīng)用、應(yīng)用更新和現(xiàn)有應(yīng)用,新應(yīng)用指此前從未在 Play 商店發(fā)布過的應(yīng)用,應(yīng)用更新指已經(jīng)在 Play 商店上架的應(yīng)用所提供的更新版本,現(xiàn)有應(yīng)用則對應(yīng)那些已經(jīng)發(fā)布在 Play 商店、但并不提供任何更新的應(yīng)用。
舉個例子,Android 11 正式版發(fā)布于 2020 年 9 月,目前 Google Play 管理中心的要求是:
- 2021 年 8 月 2 日之后,新應(yīng)用必須將目標(biāo) API 級別設(shè)置為對應(yīng)的 API 級別 30
- 2021 年 11 月 1 日之后,應(yīng)用更新必須將 API 級別設(shè)置為對應(yīng)的 API 級別 30
- 2022 年 11 月 1 日之后,現(xiàn)有應(yīng)用必須將目標(biāo) API 級別設(shè)置為對應(yīng)的 API 級別 30
如此一來,新應(yīng)用開發(fā)和現(xiàn)有應(yīng)用針對新版本系統(tǒng)特性跟進(jìn)適配的窗口時間,便被控制在了系統(tǒng)更新后的一年左右時間內(nèi)。
至于那些妄圖通過不提供應(yīng)用更新保留 Play 商店上架狀態(tài)的應(yīng)用,上述限制的存在也有一定的限制作用:2022 年 11 月 1 日之后,如果你的手機(jī)已經(jīng)升級到了 Android 11 及以上系統(tǒng)版本,那些目標(biāo) API 級別低于 30 的應(yīng)用就不會出現(xiàn)在 Play 商店的頁面和搜索結(jié)果當(dāng)中了。
參考鏈接:Google Play 應(yīng)用在目標(biāo) API 級別方面需滿足的要求 – Play 管理中心幫助
我們姑且以「Play 商店中能否搜到」這個行為為前提,對應(yīng) Android 版本和 API 級別,梳理一下最近一段時間內(nèi) Play 版應(yīng)用將會提供的一些體驗(yàn)。在 2022 年 11 月 1 日后:
所有能在 Play 商店中下載到的應(yīng)用,都將提供分區(qū)存儲(也就是「沙盒」)機(jī)制支持。關(guān)于分區(qū)存儲的詳細(xì)介紹,可以參見少數(shù)派此前的文章。
關(guān)聯(lián)閱讀:還存儲空間一片清朗:Android 的「沙盒」機(jī)制何時到來?
在數(shù)月未使用的情況下,已經(jīng)授予的運(yùn)行時敏感權(quán)限都會被系統(tǒng)自動重置;
權(quán)限自動重置與位置權(quán)限始終允許設(shè)置
申請位置信息訪問權(quán)限時,最高都只能申請到「僅在使用中允許」,「總是允許」只能在系統(tǒng)設(shè)置中手動開啟;查詢設(shè)備上已安裝應(yīng)用的列表時,則只能獲取到系統(tǒng)過濾后的已安裝應(yīng)用列表。
另外,2022 年 11 月 1 日后,此前已上架應(yīng)用的新版本都將支持 Android 12 的新特性,比如自定義通知布局、應(yīng)用休眠、傳感器采樣率限制、前臺服務(wù)啟動限制、更快的通知操作響應(yīng)速度(trampoline 優(yōu)化)……
參考鏈接:
- Google Play 應(yīng)用在目標(biāo) API 級別方面需滿足的要求 | Play 管理中心幫助
- 行為變更:以 Android 11 為目標(biāo)平臺的應(yīng)用 | Android 開發(fā)者
- 行為變更:以 Android 12 為目標(biāo)平臺的應(yīng)用 | Android 開發(fā)者
國內(nèi)還停留在三年前
如果用一句話從用戶角度去概括本文第三部分的所有內(nèi)容,那應(yīng)該是:
在 Android 11 正式版發(fā)布兩年后,所有 Play 商店中能夠搜到的應(yīng)用,無一例外都是支持 Android 11 新特性的。
所以我們說 Play 商店在目標(biāo) API 級別要求上的「嚴(yán)格」,其實(shí)也是一種相對而言的說法。因?yàn)閲鴥?nèi)主流應(yīng)用商店在目標(biāo) API 級別的要求普遍還停留在 3 年前。
2018 年 7 月,電信終端產(chǎn)業(yè)協(xié)會(TAF)發(fā)布了一份《移動應(yīng)用軟件高API等級預(yù)置與分發(fā)自律公約》,這份公約由 OPPO、華為、百度、360、阿里、小米、vivo、騰訊發(fā)起,要求自 2019 年 5 月 1 日起,新上架和預(yù)置應(yīng)用的目標(biāo) API 級別為 26 及以上,自 2019 年 8 月 1 日起,現(xiàn)有應(yīng)用的更新則必須以目標(biāo) API 級別 26 及以上進(jìn)行開發(fā)。目標(biāo) API 級別 26 對應(yīng)的版本是 Android 8.0,Android 8.0 的正式版發(fā)布時間是 2017 年 8 月。彼時的國內(nèi)主流應(yīng)用商店,還能給出一份與 Google Play 商店節(jié)奏一致的目標(biāo) API 級別要求。
不知道是電信終端產(chǎn)業(yè)協(xié)會后續(xù)在這方面沒有持續(xù)跟進(jìn),還是 Google 在 2020 年的 Android 11 正式版中引入的分區(qū)存儲機(jī)制過于激進(jìn),國內(nèi)應(yīng)用商店在目標(biāo) API 級別要求這件事情上自那之后便陷入了停滯。目前,我們在 OPPO、小米等廠商的相關(guān)開發(fā)者文檔中,能夠檢索到的目標(biāo) API 級別相關(guān)要求大多數(shù)都與三年前那份《移動應(yīng)用軟件高API等級預(yù)置與分發(fā)自律公約》有關(guān)。
我所使用的設(shè)備上所安裝應(yīng)用的目標(biāo) API 級別統(tǒng)計
換句話說,以五年前 Android 8.0 系統(tǒng)體驗(yàn)為基礎(chǔ)的應(yīng)用,依然存在于 2022 年的國內(nèi)應(yīng)用商店中。至于數(shù)量有多少,你可以下載 AppChecker 這類應(yīng)用自行檢查。
與 Play 商店實(shí)際仍有些保守的做法相比,國內(nèi)應(yīng)用商店還有更長的路要走,甚至應(yīng)該先從態(tài)度上重視起來——比起最近在 64 位應(yīng)用這件事情上的被動應(yīng)戰(zhàn),國內(nèi)應(yīng)用商店、尤其是已經(jīng)有著相當(dāng)大影響力和號召力的 O、V、華、米幾家國內(nèi)應(yīng)用商店,應(yīng)該主動擁抱的「優(yōu)秀品質(zhì)」還有不少,與時俱進(jìn)的目標(biāo) API 級別要求可以是其中之一。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實(shí),本站將立刻刪除。