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

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

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

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

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

一、Android 有幾種寫法?

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

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

從網站提供的表格不難看出,和一個甜品代號可以對應多個 Android 版本不同——比如 Android 7.0 和 Android 7.1 都可以叫「牛軋糖」——API 級別和 Android 版本是嚴格對應的

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

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

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

二、目標 API 級別與體驗

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

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

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

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

解決方案藏在目標 API 級別這個概念里。通過讀取應用開發者為應用聲明的 targetSdkVersion 清單屬性,Android 系統得以判斷這款應用的目標 API 級別是多少,進而確定哪些新特性可以在這款應用中啟用、哪些特性則需要做適當的兼容處理。

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

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

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

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

三、兩年為期、相對嚴格

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

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

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

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

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

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

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

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

如此一來,新應用開發和現有應用針對新版本系統特性跟進適配的窗口時間,便被控制在了系統更新后的一年左右時間內。

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

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

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

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

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

四、國內還停留在三年前

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

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

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

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

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

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

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

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

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

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

 

作者:克萊德

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

本文由 @克萊德 授權發布于人人都是產品經理。未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!