作者 / Google Play 產(chǎn)品經(jīng)理 Dom Elliott
自 2018 年 5 月發(fā)布 Android App Bundle 以來(lái),我們見(jiàn)證了開(kāi)發(fā)者社區(qū)積極擁護(hù)這一全新發(fā)布格式,并受益于其簡(jiǎn)化的發(fā)布管理和高級(jí)分發(fā)功能?,F(xiàn)在,有逾一百萬(wàn)款正式版應(yīng)用在使用 App Bundle,Google Play 上排名前 1,000 的大多數(shù)應(yīng)用和游戲均在此列,例如 Adobe、Duolingo、Gameloft、Netflix、redBus、Riafy 和 Twitter。
Android App Bundle
https://developer.android.google.cn/platform/technology/app-bundle
Adobe
https://developer.android.google.cn/stories/apps/adobe-app-bundle
Duolingo
https://developer.android.google.cn/stories/apps/duolingo
Gameloft
https://developer.android.google.cn/stories/games/gameloft-pad
Netflix
https://www.youtube.com/watch?v=2AmJgx-t7sQ
redBus
https://developer.android.google.cn/stories/apps/redbus
Riafy
https://www.youtube.com/watch?v=zgbLs2bEdnA
https://developer.android.google.cn/stories/apps/twitter
為了讓更多用戶(hù)體驗(yàn)到這些優(yōu)勢(shì),并專(zhuān)注推廣對(duì)所有開(kāi)發(fā)者有益的現(xiàn)代 Android 分發(fā)技術(shù),自 2021 年 8 月起,Google Play 將開(kāi)始要求新應(yīng)用使用 Android App Bundle 進(jìn)行發(fā)布。該格式將取代 APK 作為標(biāo)準(zhǔn)發(fā)布格式。
現(xiàn)代 Android 應(yīng)用分發(fā)
如果您尚未采用 App Bundle,這意味著您錯(cuò)過(guò)了以下優(yōu)勢(shì):
Android App Bundle: Google Play 使用 App Bundle 生成并優(yōu)化 APK,以針對(duì)不同設(shè)備配置和語(yǔ)言進(jìn)行分發(fā)。這種方式可令應(yīng)用體積更小 (平均而言,比一般 APK 小 15%),下載速度更快,進(jìn)而提升安裝量,減少卸載量。
Play 應(yīng)用簽名: 以 App Bundle 方式分發(fā)需要 Play 應(yīng)用簽名,這種簽名使用 Google 的安全基礎(chǔ)架構(gòu)避免了應(yīng)用簽名密鑰丟失,并可以升級(jí)到加密性更強(qiáng)的新應(yīng)用簽名密鑰。
Play Feature Delivery: 超過(guò) 10% 的使用了 App Bundle 的熱門(mén)應(yīng)用都在使用 Play Feature Delivery,自定義將哪些功能模塊交付給哪個(gè)設(shè)備,以及何時(shí)交付。它支持安裝時(shí)交付、按條件交付和按需交付等三種模式。
Play Asset Delivery: 以動(dòng)態(tài)方式交付大型資源可以減少用戶(hù)等待時(shí)間,同時(shí)縮減交付成本。使用 Play Asset Delivery 的游戲可以使用紋理壓縮格式作為交付條件,以便用戶(hù)只獲得適合其設(shè)備的資源,避免浪費(fèi)空間或帶寬。
未來(lái)改進(jìn): Play 應(yīng)用簽名將在不久后開(kāi)始向適合的應(yīng)用推出 APK Signature Scheme v4,允許其訪(fǎng)問(wèn)較新設(shè)備上即將推出的性能特性。請(qǐng)關(guān)注于 7 月 12 日舉辦的 Google 游戲開(kāi)發(fā)者峰會(huì),了解更多詳情。
Android App Bundle
https://developer.android.google.cn/platform/technology/app-bundle
Play 應(yīng)用簽名
https://play.google.com/console/about/keymanagement/
Play Feature Delivery
https://developer.android.google.cn/guide/playcore/feature-delivery
Play Asset Delivery
https://developer.android.google.cn/guide/playcore/asset-delivery
APK Signature Scheme v4
https://source.android.google.cn/security/apksigning/v4
Google 游戲開(kāi)發(fā)者峰會(huì)
https://developersonair.withgoogle.com/events/game-dev-summit-2021
回顧: 自 2021 年 8 月起的相關(guān)變更
發(fā)布類(lèi)型 | 被替換對(duì)象 | 需要在 2021 年 8 月合規(guī) |
新上架 Google Play 的應(yīng)用 | APK | Android App Bundle (AAB) |
擴(kuò)展文件 (OBB) | Play Asset Delivery 或 Play Feature Delivery | |
現(xiàn)有應(yīng)用的更新 | 沒(méi)有變化 | |
新的免安裝體驗(yàn) | 免安裝應(yīng)用 ZIP | 啟用了免安裝 Android App Bundle (AAB) |
免安裝體驗(yàn)的更新 |
Android App Bundle (AAB)
https://developer.android.google.cn/platform/technology/app-bundle
Play Feature Delivery
https://developer.android.google.cn/guide/playcore/feature-delivery
Play Asset Delivery
https://developer.android.google.cn/guide/playcore/asset-delivery
免安裝 Android App Bundle (AAB)
https://developer.android.google.cn/topic/google-play-instant/getting-started/instant-enabled-app-bundle
注意,App Bundle 的要求僅適用于新應(yīng)用,而現(xiàn)有應(yīng)用及面向特定 Google Play 用戶(hù)的私人應(yīng)用目前無(wú)需遵從此要求。感謝為 App Bundle 的發(fā)展做出貢獻(xiàn)的眾多開(kāi)發(fā)者,我們也期待在未來(lái)為開(kāi)發(fā)者帶來(lái)更多更新。
關(guān)于 Android App Bundle 的一些常見(jiàn)問(wèn)題的回答
Q相比 APK 而言,使用 App Bundle 開(kāi)發(fā)應(yīng)用需要多少工作量?
對(duì)于大多數(shù)應(yīng)用而言,構(gòu)建 AAB 文件來(lái)替代 APK 文件僅需要少量工作。這其中的關(guān)鍵是在構(gòu)建時(shí)選擇其他選項(xiàng)并按常規(guī)方式進(jìn)行測(cè)試。App Bundle 是一種受主流構(gòu)建工具支持的開(kāi)源格式,包括 Android Studio、Gradle、Bazel、Buck、Cocos Creator、Unity、Unreal Engine 和其他引擎。在 Play Core 原生 SDK、Play Core Java SDK 和 Play Core Kotlin SDK 的助力下,無(wú)論用戶(hù)偏好哪種編碼環(huán)境,都可以輕松開(kāi)始使用可選的高級(jí) App Bundle 功能。
QApp Bundle 為何不支持?jǐn)U展文件 (OBB)?為何游戲應(yīng)使用 Play Asset Delivery?
APK 要求使用單獨(dú)的文件 (OBB) 來(lái)向用戶(hù)推送更多資源。但是,由于 OBB 不具有簽名且存儲(chǔ)在應(yīng)用的外部存儲(chǔ)中,所以不夠安全。借助 Play Asset Delivery (PAD),用戶(hù)可以在 Play 商店中將大小超過(guò) 150MB 的游戲整體發(fā)布為單個(gè) App Bundle,從而替換掉 OBB。除了能實(shí)現(xiàn)更順暢的發(fā)布流程和更靈活的推送模式,相比于以前的擴(kuò)展文件,PAD 具有更多優(yōu)勢(shì): 其資源的增量補(bǔ)丁面向大型應(yīng)用進(jìn)行了優(yōu)化,這意味著更新需要的設(shè)備存儲(chǔ)空間比 OBB 少得多。因此,其快速跟進(jìn)的安裝模式提升了安裝率和商店轉(zhuǎn)化率。最終,由于 ASTC 現(xiàn)在支持約 80% 的設(shè)備,紋理壓縮格式的定位條件讓您可以向支持該功能的設(shè)備推送 ASTC。您可以定位眾多 Android 設(shè)備,同時(shí)高效利用可用硬件和設(shè)備存儲(chǔ)空間。
Q如果使用 App Bundle,我是否可以繼續(xù)通過(guò)多分發(fā)渠道/應(yīng)用商店發(fā)布應(yīng)用?
當(dāng)然可以,您可以通過(guò)多種方式實(shí)現(xiàn)。您可以使用通用的應(yīng)用簽名密鑰或使用針對(duì)不同渠道的唯一應(yīng)用簽名密鑰,包括面向 Google Play 的唯一應(yīng)用簽名密鑰。您可以在本地面向所有分發(fā)渠道構(gòu)建并簽名工件,或者從 Google Play 中下載可分發(fā)的 APK,并發(fā)布于其他渠道。從 Google Play 下載的 APK,無(wú)論其是通過(guò) Play 管理中心中的 App Bundle 資源管理器還是 Play Developer API 進(jìn)行下載,均由 Play 應(yīng)用簽名管理的同個(gè)密鑰進(jìn)行簽名。
Q如果要發(fā)布一個(gè)新應(yīng)用,我能決定我的應(yīng)用簽名密鑰內(nèi)容嗎?
可以,我們會(huì)在 Play 管理中心中提供此選項(xiàng)。創(chuàng)建新應(yīng)用時(shí),您可以選擇向 Google 提供應(yīng)用簽名密鑰。您可以借此在本地留存應(yīng)用簽名密鑰副本,例如生成與 Play 同樣秘鑰簽名的應(yīng)用版本,并在其他渠道上發(fā)布。很快,Play 管理中心將幫助您更加輕松地進(jìn)行首次發(fā)布應(yīng)用,只要在第一次發(fā)布到開(kāi)放渠道之前,您都可以更改應(yīng)用簽名密鑰。
Q在 Google Play 上分發(fā)應(yīng)用時(shí),我如何確保按我偏好的方式向用戶(hù)推送我的應(yīng)用?
您可以隨時(shí)利用 Play Store 或 Play 管理中心中的 App Bundle 資源管理器下載并檢查工件,并通過(guò) Play Developer API 驗(yàn)證應(yīng)用。此外,App Bundle 的代碼透明性是一項(xiàng)可選的全新功能,可檢查設(shè)備上運(yùn)行的代碼是否是開(kāi)發(fā)者最初構(gòu)建并簽名的代碼。
App Bundle 的代碼透明性
https://developer.android.google.cn/guide/app-bundle/code-transparency
Q如果我已經(jīng)在 Google Play 上發(fā)布了一款應(yīng)用,我能否在不提供現(xiàn)有應(yīng)用簽名密鑰的副本前提下開(kāi)始使用 Play 應(yīng)用簽名?
若想使用 Play 應(yīng)用簽名,您需要提供應(yīng)用簽名密鑰的副本,因?yàn)?Google Play 需要使用此簽名副本進(jìn)行簽名,并向您的現(xiàn)有用戶(hù)提供版本更新。這種分發(fā)格式適合多數(shù)開(kāi)發(fā)者,超過(guò)一百萬(wàn)款應(yīng)用在正式版中使用 Play 應(yīng)用簽名。我們將在不久后面向現(xiàn)有應(yīng)用提供額外選項(xiàng),允許開(kāi)發(fā)者執(zhí)行密鑰升級(jí)來(lái)選擇加入 Play 應(yīng)用簽名。此選項(xiàng)意味著 Play 應(yīng)用簽名可以針對(duì)新安裝及其后續(xù)更新使用新的唯一密鑰。不過(guò),要做到這一點(diǎn),當(dāng)您上傳 App Bundle 時(shí),您還需要上傳使用舊密鑰簽名的原 APK,這樣一來(lái),Google Play 即可繼續(xù)向現(xiàn)有用戶(hù)推送更新。
Q我可以更改我的應(yīng)用簽名密鑰嗎?
當(dāng)然,一些應(yīng)用可以請(qǐng)求在 Play 管理中心中針對(duì)新安裝應(yīng)用進(jìn)行應(yīng)用簽名密鑰升級(jí)。Google Play 將使用新密鑰對(duì)新安裝應(yīng)用和應(yīng)用更新進(jìn)行簽名,并使用舊版應(yīng)用簽名密鑰對(duì)密鑰升級(jí)前已安裝應(yīng)用的用戶(hù)進(jìn)行的更新進(jìn)行簽名。很快,Play 應(yīng)用簽名密鑰的升級(jí)還將添加對(duì) APK Signature Scheme v3 密鑰輪替的支持。這將促使更多應(yīng)用可以選擇密鑰升級(jí),使借助升級(jí)密鑰簽名的應(yīng)用覆蓋更多用戶(hù)。
應(yīng)用簽名密鑰升級(jí)
https://support.google.com/googleplay/android-developer/answer/9842756#upgrade
APK Signature Scheme v3
https://source.android.google.cn/security/apksigning/v3