下載應用這件事,Play 商店為什么比國內(nèi)軟件商店更好?

0 評論 4076 瀏覽 4 收藏 15 分鐘

編輯導語:總會看到Google Play上有好多好用的App,同一款應用Play版更好的說法是Android圈的都市傳說?為什么國產(chǎn)應用在 Play 商店中正變得越來越少了?本篇文章作者將為你詳細解答。

對有一定經(jīng)驗的 Android 玩家來說,在下載 App 這件事情上,Play 商店依然是那個值得排除萬難、能上就上的選擇,沒有之一。坊間還流傳著各種關于「Play 版」應用的傳聞:Play 版應用有 FCM 推送、Play 版應用更省電、Play 版應用沒廣告、Play 版應用有更適合現(xiàn)代設備的 64 位版本……

今天這篇文章,我們從一個對普通用戶而言可能會有點陌生的概念——目標 API 級別入手,希望能為你解答上面所提到的一部分問題。

一、Android 有幾種寫法?

對 Android 系統(tǒng)而言,同一個系統(tǒng)版本一般都對應了不止一種名稱,比如對消費者而言 Android 12 是 Android 12,或者根據(jù) Google 按照字母表順序命名的習慣叫做 Android S;而如果 2019 年 Google 沒有官宣取消甜品代號命名方式,Android 12 的甜品代號Snow Cone應該也會更加為大眾所熟知。

針對開發(fā)者,每個 Android 版本還會被分配到一個唯一的整數(shù)標識符,這個整數(shù)標識符就是 API 級別。針對這些不同的命名方式,GitHub 上也有人做了一個清晰明了的網(wǎng)站,有興趣的朋友可以去看看。

從網(wǎng)站提供的表格不難看出,和一個甜品代號可以對應多個 Android 版本不同——比如 Android 7.0 和 Android 7.1 都可以叫「牛軋?zhí)恰埂?strong>API 級別和 Android 版本是嚴格對應的。

下載應用這件事,Play 商店為什么比國內(nèi)軟件商店更好?

API 級別 32 只可能對應 Android 12L,Android 12L 的 API 級別也只能是 32。對于市面上運行系統(tǒng)版本千差萬別的 Android 設備而言(你同樣可以在上面那個網(wǎng)站中看到不同 Android 版本的累計用戶占比),API 級別也成為了開發(fā)者辨別用戶系統(tǒng)版本和應用運行環(huán)境、保證應用兼容性的重要參考。具體而言:

  • 最低 API 級別:代表了應用可以運行的最低系統(tǒng)版本。如果一款應用的最低 API 級別為 28,那么這款應用只能保證在 Android 9 及以上系統(tǒng)版本中的兼容性
  • 目標 API 級別:代表了應用被設計用于運行的系統(tǒng)版本。如果一款應用的目標 API 級別為 32,則代表這款應用被設計用于在 Android 12L 中運行,因此也理所當然地支持 Android 12L 引入的新特性

二、目標 API 級別與體驗

聊完概念我們再來聊聊現(xiàn)象。即便不談應用商店本身的使用體驗,在能不能下到好應用這一核心需求上,Google Play 和各種國內(nèi)應用商店都有著天壤之別。

對國內(nèi)應用商店而言,兼容各種魚龍混雜、質(zhì)量參差不齊的應用才是頭等大事。畢竟為了賺錢,大部分 Android 設備默認的應用商店也都是自家的,如果用戶發(fā)現(xiàn)某個應用無法正常運行,即便這個應用本身做得非常糟糕,他們往往也會將「鍋」扔給手機廠商。

一傳十十傳百,這家廠商的手機在這位朋友的圈子里就會被打上「不推薦」的評級。Google Play 商店不一樣。在更廣泛的 Android 生態(tài)里,大多數(shù) Android 設備都會搭載 GMS 套件、不同廠商的 Android 設備也能從同一個 Google Play 商店中獲取應用。

因此 Play 商店作為由 Google 直接控制的應用商店,需要做好的就是平臺本身:如何規(guī)范應用行為、如何保證設備安全、如何進行高效分發(fā)……相對而言,Google 的地位也更加主動一點,如果某款 Play 商店的應用無法正常運行,用戶只會將責任歸咎于手機和手機系統(tǒng)本身,或是在商店里留個一星差評罵罵開發(fā)者。

解決方案藏在目標 API 級別這個概念里。通過讀取應用開發(fā)者為應用聲明的 targetSdkVersion 清單屬性,Android 系統(tǒng)得以判斷這款應用的目標 API 級別是多少,進而確定哪些新特性可以在這款應用中啟用、哪些特性則需要做適當?shù)募嫒萏幚怼?/p>

以前幾年大家熱切期盼的「沙盒」機制分區(qū)存儲為例,應用必須首先通過清單屬性告訴 Android 系統(tǒng)「我的目標 API 級別是 30,是支持最新特性的好應用」,系統(tǒng)在讀取到這一聲明后才會為應用啟用分區(qū)存儲機制;而對當時需要時間過渡的應用而言,它們在告訴系統(tǒng)自己的目標 API 級別不夠 30 之后,系統(tǒng)則不會為這些應用啟用「沙盒」機制。

下載應用這件事,Play 商店為什么比國內(nèi)軟件商店更好?

所以在 Android 開發(fā)者網(wǎng)站所列出的各種 API 接口、聲明數(shù)值、字符串等信息旁,也都會有一行小字說明這個功能是在哪一個 API 級別中所加入的;

在 Android 13 的介紹中,Google 也有一個專門的頁面來說明目標 API 級別在 Android 13 及以上(另一種說法是「以 Android 13 或更高版本為目標平臺」)的應用將受到哪些行為變更影響。

三、兩年為期、相對嚴格

我們可以將 2017 年看作是 Google 開始著手治理 Android 系統(tǒng)「碎片化」問題的開始,這一年,Android 系統(tǒng)本身引入了著名的Project Treble,讓那些有開發(fā)實力的團隊在系統(tǒng)大版本更新這件事情上直接轉(zhuǎn)入了「快車道」。

但系統(tǒng)更新僅僅是一方面,系統(tǒng)更新帶來的各種新功能,除了手機廠商的配合,還是需要應用開發(fā)者這邊積極響應,才能將 Google 所預想的 Android 體驗帶到用戶手中。

因此也是在 2017 年,Google 開始通過 Play 商店對 Android 應用的最終體驗進行干預,首先在 64 位應用支持這件事情上開始了籌備。2021 年 8 月,經(jīng)過四年多的籌備和過渡,Play 商店中的所有應用都具備了向 64 位設備提供對應支持的能力。

下載應用這件事,Play 商店為什么比國內(nèi)軟件商店更好?

同時,近幾年 Play 商店在 API 級別上的規(guī)范也逐漸成型。總體而言,對于那些需要在 Play 商店中持續(xù)提供更新的大部分應用,Google Play 商店一般會提供一年左右的時間來讓開發(fā)者針對最新的目標 API 級別進行適配。

這里 Play 商店將應用分成了三類:新應用、應用更新和現(xiàn)有應用,新應用指此前從未在 Play 商店發(fā)布過的應用,應用更新指已經(jīng)在 Play 商店上架的應用所提供的更新版本,現(xiàn)有應用則對應那些已經(jīng)發(fā)布在 Play 商店、但并不提供任何更新的應用。

舉個例子,Android 11 正式版發(fā)布于 2020 年 9 月,目前 Google Play 管理中心的要求是:

  1. 2021 年 8 月 2 日之后,新應用必須將目標 API 級別設置為對應的 API 級別 30;
  2. 2021 年 11 月 1 日之后,應用更新必須將 API 級別設置為對應的 API 級別 30;
  3. 2022 年 11 月 1 日之后,現(xiàn)有應用必須將目標 API 級別設置為對應的 API 級別 30。

如此一來,新應用開發(fā)和現(xiàn)有應用針對新版本系統(tǒng)特性跟進適配的窗口時間,便被控制在了系統(tǒng)更新后的一年左右時間內(nèi)。

至于那些妄圖通過不提供應用更新保留 Play 商店上架狀態(tài)的應用,上述限制的存在也有一定的限制作用:2022 年 11 月 1 日之后,如果你的手機已經(jīng)升級到了 Android 11 及以上系統(tǒng)版本,那些目標 API 級別低于 30 的應用就不會出現(xiàn)在 Play 商店的頁面和搜索結果當中了。

我們姑且以「Play 商店中能否搜到」這個行為為前提,對應 Android 版本和 API 級別,梳理一下最近一段時間內(nèi) Play 版應用將會提供的一些體驗。在 2022 年 11 月 1 日后:所有能在 Play 商店中下載到的應用,都將提供分區(qū)存儲(也就是「沙盒」)機制支持。在數(shù)月未使用的情況下,已經(jīng)授予的運行時敏感權限都會被系統(tǒng)自動重置;

下載應用這件事,Play 商店為什么比國內(nèi)軟件商店更好?

申請位置信息訪問權限時,最高都只能申請到「僅在使用中允許」,「總是允許」只能在系統(tǒng)設置中手動開啟;查詢設備上已安裝應用的列表時,則只能獲取到系統(tǒng)過濾后的已安裝應用列表。

另外,2022 年 11 月 1 日后,此前已上架應用的新版本都將支持Android 12 的新特性,比如自定義通知布局、應用休眠、傳感器采樣率限制、前臺服務啟動限制、更快的通知操作響應速度(trampoline 優(yōu)化)。

四、國內(nèi)還停留在三年前

如果用一句話從用戶角度去概括本文第三部分的所有內(nèi)容,那應該是:

在 Android 11 正式版發(fā)布兩年后,所有 Play 商店中能夠搜到的應用,無一例外都是支持 Android 11 新特性的。

所以我們說 Play 商店在目標 API 級別要求上的「嚴格」,其實也是一種相對而言的說法。因為國內(nèi)主流應用商店在目標 API 級別的要求普遍還停留在 3 年前。

2018 年 7 月,電信終端產(chǎn)業(yè)協(xié)會(TAF)發(fā)布了一份《移動應用軟件高API等級預置與分發(fā)自律公約》,這份公約由 OPPO、華為、百度、360、阿里、小米、vivo、騰訊發(fā)起,要求自 2019 年 5 月 1 日起,新上架和預置應用的目標 API 級別為 26 及以上,自 2019 年 8 月 1 日起,現(xiàn)有應用的更新則必須以目標 API 級別 26 及以上進行開發(fā)。

目標 API 級別 26 對應的版本是 Android 8.0,Android 8.0 的正式版發(fā)布時間是 2017 年 8 月。彼時的國內(nèi)主流應用商店,還能給出一份與 Google Play 商店節(jié)奏一致的目標 API 級別要求。

不知道是電信終端產(chǎn)業(yè)協(xié)會后續(xù)在這方面沒有持續(xù)跟進,還是 Google 在 2020 年的 Android 11 正式版中引入的分區(qū)存儲機制過于激進,國內(nèi)應用商店在目標 API 級別要求這件事情上自那之后便陷入了停滯。

目前,我們在 OPPO、小米等廠商的相關開發(fā)者文檔中,能夠檢索到的目標 API 級別相關要求大多數(shù)都與三年前那份《移動應用軟件高API等級預置與分發(fā)自律公約》有關。

下載應用這件事,Play 商店為什么比國內(nèi)軟件商店更好?

我所使用的設備上所安裝應用的目標 API 級別統(tǒng)計換句話說,以五年前 Android 8.0 系統(tǒng)體驗為基礎的應用,依然存在于 2022 年的國內(nèi)應用商店中。至于數(shù)量有多少,你可以下載 AppChecker 這類應用自行檢查。

與 Play 商店實際仍有些保守的做法相比,國內(nèi)應用商店還有更長的路要走,甚至應該先從態(tài)度上重視起來——比起最近在 64 位應用這件事情上的被動應戰(zhàn),國內(nèi)應用商店、尤其是已經(jīng)有著相當大影響力和號召力的 O、V、華、米幾家國內(nèi)應用商店,應該主動擁抱的「優(yōu)秀品質(zhì)」還有不少,與時俱進的目標 API 級別要求可以是其中之一。

 

作者:克萊德

原文鏈接:https://sspai.com/post/73356?utm_source=wechat&utm_medium=social

本文由 @克萊德 授權發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 Unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!