作者 / Google Play 產(chǎn)品經(jīng)理 Dom Elliott
自 2018 年 5 月發(fā)布 Android App Bundle 以來,我們見證了開發(fā)者社區(qū)積極擁護(hù)這一全新發(fā)布格式,并受益于其簡(jiǎn)化的發(fā)布管理和高級(jí)分發(fā)功能。現(xià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
為了讓更多用戶體驗(yàn)到這些優(yōu)勢(shì),并專注推廣對(duì)所有開發(fā)者有益的現(xiàn)代 Android 分發(fā)技術(shù),自 2021 年 8 月起,Google Play 將開始要求新應(yīng)用使用 Android App Bundle 進(jìn)行發(fā)布。該格式將取代 APK 作為標(biāo)準(zhǔn)發(fā)布格式。
現(xiàn)代 Android 應(yīng)用分發(fā)
如果您尚未采用 App Bundle,這意味著您錯(cuò)過了以下優(yōu)勢(shì):
Android App Bundle: Google Play 使用 App Bundle 生成并優(yōu)化 APK,以針對(duì)不同設(shè)備配置和語言進(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: 超過 10% 的使用了 App Bundle 的熱門應(yīng)用都在使用 Play Feature Delivery,自定義將哪些功能模塊交付給哪個(gè)設(shè)備,以及何時(shí)交付。它支持安裝時(shí)交付、按條件交付和按需交付等三種模式。
Play Asset Delivery: 以動(dòng)態(tài)方式交付大型資源可以減少用戶等待時(shí)間,同時(shí)縮減交付成本。使用 Play Asset Delivery 的游戲可以使用紋理壓縮格式作為交付條件,以便用戶只獲得適合其設(shè)備的資源,避免浪費(fèi)空間或帶寬。
未來改進(jìn): Play 應(yīng)用簽名將在不久后開始向適合的應(yīng)用推出 APK Signature Scheme v4,允許其訪問較新設(shè)備上即將推出的性能特性。請(qǐng)關(guān)注于 7 月 12 日舉辦的 Google 游戲開發(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 游戲開發(fā)者峰會(huì)
https://developersonair.withgoogle.com/events/game-dev-summit-2021
回顧: 自 2021 年 8 月起的相關(guān)變更
發(fā)布類型 | 被替換對(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)用的更新 | 沒有變化 | |
新的免安裝體驗(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 用戶的私人應(yīng)用目前無需遵從此要求。感謝為 App Bundle 的發(fā)展做出貢獻(xiàn)的眾多開發(fā)者,我們也期待在未來為開發(fā)者帶來更多更新。
關(guān)于 Android App Bundle 的一些常見問題的回答
Q相比 APK 而言,使用 App Bundle 開發(fā)應(yīng)用需要多少工作量?
對(duì)于大多數(shù)應(yīng)用而言,構(gòu)建 AAB 文件來替代 APK 文件僅需要少量工作。這其中的關(guān)鍵是在構(gòu)建時(shí)選擇其他選項(xiàng)并按常規(guī)方式進(jìn)行測(cè)試。App Bundle 是一種受主流構(gòu)建工具支持的開源格式,包括 Android Studio、Gradle、Bazel、Buck、Cocos Creator、Unity、Unreal Engine 和其他引擎。在 Play Core 原生 SDK、Play Core Java SDK 和 Play Core Kotlin SDK 的助力下,無論用戶偏好哪種編碼環(huán)境,都可以輕松開始使用可選的高級(jí) App Bundle 功能。
QApp Bundle 為何不支持?jǐn)U展文件 (OBB)?為何游戲應(yīng)使用 Play Asset Delivery?
APK 要求使用單獨(dú)的文件 (OBB) 來向用戶推送更多資源。但是,由于 OBB 不具有簽名且存儲(chǔ)在應(yīng)用的外部存儲(chǔ)中,所以不夠安全。借助 Play Asset Delivery (PAD),用戶可以在 Play 商店中將大小超過 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ù)通過多分發(fā)渠道/應(yīng)用商店發(fā)布應(yīng)用?
當(dāng)然可以,您可以通過多種方式實(shí)現(xiàn)。您可以使用通用的應(yīng)用簽名密鑰或使用針對(duì)不同渠道的唯一應(yīng)用簽名密鑰,包括面向 Google Play 的唯一應(yīng)用簽名密鑰。您可以在本地面向所有分發(fā)渠道構(gòu)建并簽名工件,或者從 Google Play 中下載可分發(fā)的 APK,并發(fā)布于其他渠道。從 Google Play 下載的 APK,無論其是通過 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ā)布到開放渠道之前,您都可以更改應(yīng)用簽名密鑰。
Q在 Google Play 上分發(fā)應(yīng)用時(shí),我如何確保按我偏好的方式向用戶推送我的應(yīng)用?
您可以隨時(shí)利用 Play Store 或 Play 管理中心中的 App Bundle 資源管理器下載并檢查工件,并通過 Play Developer API 驗(yàn)證應(yīng)用。此外,App Bundle 的代碼透明性是一項(xiàng)可選的全新功能,可檢查設(shè)備上運(yùn)行的代碼是否是開發(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)用簽名密鑰的副本前提下開始使用 Play 應(yīng)用簽名?
若想使用 Play 應(yīng)用簽名,您需要提供應(yīng)用簽名密鑰的副本,因?yàn)?Google Play 需要使用此簽名副本進(jìn)行簽名,并向您的現(xiàn)有用戶提供版本更新。這種分發(fā)格式適合多數(shù)開發(fā)者,超過一百萬款應(yīng)用在正式版中使用 Play 應(yīng)用簽名。我們將在不久后面向現(xiàn)有應(yīng)用提供額外選項(xiàng),允許開發(fā)者執(zhí)行密鑰升級(jí)來選擇加入 Play 應(yīng)用簽名。此選項(xiàng)意味著 Play 應(yīng)用簽名可以針對(duì)新安裝及其后續(xù)更新使用新的唯一密鑰。不過,要做到這一點(diǎn),當(dāng)您上傳 App Bundle 時(shí),您還需要上傳使用舊密鑰簽名的原 APK,這樣一來,Google Play 即可繼續(xù)向現(xiàn)有用戶推送更新。
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)用的用戶進(jìn)行的更新進(jìn)行簽名。很快,Play 應(yīng)用簽名密鑰的升級(jí)還將添加對(duì) APK Signature Scheme v3 密鑰輪替的支持。這將促使更多應(yīng)用可以選擇密鑰升級(jí),使借助升級(jí)密鑰簽名的應(yīng)用覆蓋更多用戶。
應(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