作者 / Dave Burke,工程副總裁

從手機和筆記本電腦,再到平板電腦、電視甚至汽車,Android 應(yīng)用每天都在各種設(shè)備上支持著數(shù)十億人的工作、娛樂、交流和創(chuàng)造。當越來越多的人開始依賴您所構(gòu)建的體驗,人們的期望也跟著水漲船高。我們堅信,Android 開發(fā)者們的反饋有助于我們?yōu)槟膽?yīng)用和所有用戶構(gòu)建一個更好的平臺。我們已經(jīng)發(fā)布了 Android 12 (下一代 Android 系統(tǒng)) 的第一個開發(fā)者預(yù)覽版,供您測試和提交反饋。
對于每一個版本,我們都致力于使操作系統(tǒng)更智能、更易用、更強勁,并且始終以隱私和安全為核心。在 Android 12 中,我們還將為您提供新的工具,幫助您為用戶打造更出色的體驗。首先是兼容媒體轉(zhuǎn)碼,即便您的應(yīng)用尚不支持,這個功能也可以幫助應(yīng)用使用最新的視頻格式。此外,圖像和視頻等富媒體內(nèi)容現(xiàn)在可以更輕松地復制/粘貼到您的應(yīng)用里。我們還將添加隱私保護并優(yōu)化性能,使您的應(yīng)用保持及時響應(yīng)。
首個預(yù)覽版只是 Android 12 的開始,隨著發(fā)布的進行,我們會有更多的內(nèi)容分享給開發(fā)者。請繼續(xù)閱讀本文,了解 Android 12 的最新變化,并訪問 Android 12 開發(fā)者網(wǎng)站,獲取有關(guān) 下載并安裝到 Pixel 設(shè)備 和 發(fā)布時間表 的詳細信息。與往常一樣,盡早獲得您的反饋并將其納入最終產(chǎn)品對我們來說非常重要,因此請務(wù) 必告訴我們您的想法!
除了我們在 Android 12 中所做的工作之外,我們還發(fā)布了另一個重要工具的最新進展,那就是可以幫助您更輕松地創(chuàng)建出色用戶體驗的 Jetpack Compose,這是我們用于構(gòu)建原生界面的新一代工具包。歡迎您在評論區(qū)留言,告訴我們對 Jetpack Compose 最關(guān)切的問題。
信任和安全
隱私是我們一切工作的核心,在 Android 12 中,我們繼續(xù)專注于為用戶提供更多的透明度和控制權(quán),同時保證設(shè)備和數(shù)據(jù)安全。在新版本中我們做出了很多改動,包括對可用于跟蹤的標識符增加了新的限制,為應(yīng)用組件增加了更安全的默認值,等等。這些變更可能會對應(yīng)用產(chǎn)生影響,因此,我們建議您盡快開始測試。同時,請繼續(xù)留意將在后續(xù)預(yù)覽版中提供的更多隱私和安全功能。
WebView 中的現(xiàn)代 SameSite cookie 行為 - WebView 順應(yīng) Chrome 和其他瀏覽器的 變化,加入了新的 SameSite cookie 行為,提供額外的安全性和隱私性,讓用戶對 cookie 跨站點的使用方式擁有更多的透明度和控制權(quán)。請訪問 官方文檔 了解詳細信息。
限制使用 Netlink MAC - 我們將繼續(xù)幫助開發(fā)者遷移到 保護隱私的可重置標識符。為了在多次版本發(fā)布中簡化設(shè)備級別 Netlink MAC 的遷移,我們在 Android 11 中將這個功能限制在了 API 級別 30。而在 Android 12 中,無論 targetSDK 級別是多少,我們將對所有應(yīng)用施加這一限制。請訪問 官方文檔 了解詳細信息。
更安全地導出組件 - 為了防止應(yīng)用意外導出 activity、服務(wù)和接收器,我們更改了 android:exported 屬性的默認處理方式,使其更加明確。借助這項變更,聲明一個或多個 intent 過濾器的組件現(xiàn)在必須顯式聲明一個 android:exported 屬性。您應(yīng)檢查清單文件中的組件,避免與此變更相關(guān)的安裝錯誤。請訪問 官方文檔 了解詳細信息。
更安全地處理 Intent - 為了使 PendingIntents 的處理更加安全,Android 12 要求應(yīng)用為每個 PendingIntent 顯式聲明一個可變性標志,即 FLAG_MUTABLE 或新的 FLAG_IMMUTABLE。請訪問 官方文檔 了解詳細信息。
更多的 隱私與安全變更.
更好的用戶體驗工具
在 Android 12 中,我們在完善體驗和改進性能的關(guān)鍵領(lǐng)域持續(xù)投入資源。以下是目前的部分進展。
兼容媒體轉(zhuǎn)碼 (compatible media transcoding) - 隨著 HEVC 硬件編碼器在移動設(shè)備上的普及,相機應(yīng)用也多以 HEVC 格式進行拍攝。與舊的編解碼器相比,HEVC 在質(zhì)量和壓縮方面都具有明顯提升。大多數(shù)應(yīng)用都應(yīng)支持 HEVC,但對于無法支持 HEVC 的應(yīng)用,我們引入了兼容媒體轉(zhuǎn)碼。
借助此功能,不支持 HEVC 的應(yīng)用可以讓平臺自動將文件轉(zhuǎn)碼為廣泛兼容的 AVC 格式。轉(zhuǎn)碼過程需要一定時間,具體取決于視頻的內(nèi)容和設(shè)備的硬件屬性。例如,30fps 的一分鐘 1080p 視頻在 Pixel 4 上轉(zhuǎn)碼需要 9 秒左右。您可以通過聲明應(yīng)用不支持的媒體格式來選擇使用轉(zhuǎn)碼服務(wù)。我們強烈建議開發(fā)者使應(yīng)用支持 HEVC,如果無法支持,再啟用兼容媒體轉(zhuǎn)碼。該功能將在所有使用 HEVC 格式進行視頻拍攝的設(shè)備上啟用。我們希望聽到您對此功能的反饋。請訪問 官方文檔 了解詳細信息。
AVIF 圖像支持 - Android 12 引入了對 AV1 圖像文件格式 (AVIF) 的平臺支持,提供更高的圖像質(zhì)量和更高效的壓縮。AVIF 是一種使用 AV1 編碼的圖像和圖像序列的容器格式。與其他現(xiàn)代圖像格式一樣,AVIF 利用了視頻壓縮的幀內(nèi)編碼內(nèi)容。相較于舊的圖像格式 (如 JPEG),在相同的文件大小下,AVIF 可以極大地提高圖像質(zhì)量。


△ 上圖: AVIF (18.2kB);下圖: JPEG (20.7kB)
圖源:《AVIF 已經(jīng)到來》中的 圖像對比,作者 Jake Archibald
前臺服務(wù)優(yōu)化 - 前臺服務(wù)是應(yīng)用管理某些面向用戶任務(wù)的重要方式,但過度使用會影響性能,甚至導致應(yīng)用被系統(tǒng)終止。為了確保用戶獲得更好的體驗,對于以新平臺為目標的應(yīng)用,我們將阻止從后臺啟動前臺服務(wù)。為了幫助大家更輕松地擺脫這種做法,我們在 JobScheduler 中引入了一個新的 加急作業(yè) (expedited job),該作業(yè)具有較高的進程優(yōu)先級、網(wǎng)絡(luò)訪問權(quán)限,并且立即運行,不受省電模式 (Battery Saver) 或低電耗模式 (Doze) 等電耗約束的影響。為了實現(xiàn)向下兼容,我們還將加急作業(yè)集成到了最新版本的 Jetpack WorkManager 庫 中。另外,為了減輕對用戶的干擾,我們現(xiàn)在將部分前臺服務(wù)通知的顯示延遲了最多 10 秒。這使短暫的任務(wù)有機會在通知顯示之前完成。請訪問 官方文檔 了解詳細信息。
富內(nèi)容插入 (rich content insertion) - 用戶喜歡看圖像、視頻和其他富有表現(xiàn)力的內(nèi)容,但在應(yīng)用中插入和移動這些內(nèi)容并不總是那么容易。為了讓您的應(yīng)用能夠快速接收富內(nèi)容,我們引入了一個新的統(tǒng)一 API,讓您能夠接受任何來源的內(nèi)容: 剪貼板、鍵盤或拖放。您可以將新接口 OnReceiveContentListener 附加到界面組件上,并在通過任何機制插入內(nèi)容時獲得回調(diào)。此回調(diào)將成為代碼處理所有內(nèi)容插入的唯一位置,從純文本和樣式文本到標記、圖像、視頻、音頻文件等。為了實現(xiàn)向下兼容,我們已將統(tǒng)一的 API 加入了 AndroidX。請訪問 官方文檔 了解詳細信息。
音頻耦合觸感效果 (audio-coupled haptic effect) - 在 Android 12 中,應(yīng)用可以通過手機的振動單元提供音頻耦合觸感反饋。振動強度和頻率來自于音頻會話,讓您可以創(chuàng)建更沉浸的游戲和音頻體驗。例如,視頻通話應(yīng)用可以使用自定義鈴聲,通過觸感反饋識別來電者,您還可以在賽車游戲中模擬崎嶇地貌。請訪問 官方文檔 了解詳細信息。
多聲道音頻 - Android 12 為包含空間信息的音頻帶來了多項增強。添加了對 MPEG-H 透傳 (passthrough) 和分載 (offload) 模式的播放支持,音頻混音器、重采樣器和效果經(jīng)過優(yōu)化,支持多達 24 個通道 (過去最大僅支持 8 個)。
手勢導航的沉浸模式 API 改進 - 我們簡化了沉浸模式,使手勢導航在多種場景下,如觀看視頻、閱讀書籍或玩游戲時,更簡單、更連貫。在游戲相關(guān)的全屏體驗中,我們?nèi)匀粫?保護應(yīng)用不受意外手勢的影響,但在所有其他全屏或沉浸式體驗中 (如視頻播放器、閱讀、圖冊),對于針對新平臺的應(yīng)用,我們將改變默認設(shè)置,允許用戶通過單次滑動來進行導航。請訪問 官方文檔 了解詳細信息。
通知界面更新 - 我們對通知設(shè)計進行改版,使其更現(xiàn)代、更易用、更實用。在首個預(yù)覽版中,您可以發(fā)現(xiàn)從抽屜式導航欄和控件到模板本身都有所變化。我們還優(yōu)化了整個系統(tǒng)的轉(zhuǎn)場和動畫,使其更加流暢。作為更新的一部分,對于針對 Android 12 的應(yīng)用,我們會使用自定義內(nèi)容、圖標以及展開提示來對通知進行美化,從而使其觀感與其他通知一致。請訪問 官方文檔 了解詳細信息。
更快、更靈敏的通知 - 用戶點按通知時,期望的是立即跳轉(zhuǎn)到應(yīng)用,越快越好。為了滿足這一期望,開發(fā)者需確保點擊通知應(yīng)直接觸發(fā) Activity 啟動,而不是使用 "蹦床" (通過廣播接收器或服務(wù)) 啟動 Activity。通知蹦床會造成明顯的延遲,影響用戶體驗。為了保持通知的響應(yīng)速度,Android 12 將阻止通知蹦床啟動目標 Activity,我們也要求開發(fā)者不再使用這種實踐模式。此項變更僅適用于針對新平臺的應(yīng)用,但對于所有應(yīng)用,我們都會顯示消息框,使您和用戶可以看到蹦床。請訪問 官方文檔 了解詳細信息。
改進的 Binder IPC 調(diào)用 - 在提升性能方面,我們關(guān)注如何降低系統(tǒng)可變性。經(jīng)過對延遲和工作負載分布的深入觀察,我們做出優(yōu)化,減少了末端的中位數(shù)體驗 (或 99% 的用例)。在此期間,我們有針對性地改進了系統(tǒng)綁定調(diào)用,增加了輕量級緩存策略,并專注于消除鎖爭用以改善延遲分布。這樣一來,Binder 調(diào)用整體性能提升約 2 倍,特定調(diào)用的性能提升顯著,如 refContentProvider() 提升了 47 倍、releaseWakeLock() 提升了 15 倍、JobScheduler.schedule() 提升了 7.9 倍。
應(yīng)用兼容性
發(fā)布新的平臺版本時,我們優(yōu)先考慮應(yīng)用的兼容性,讓系統(tǒng)更新的體驗更快、更順暢。在 Android 12 中,大多數(shù)面向應(yīng)用的變更都是可選的,以便您有更多時間調(diào)整適應(yīng)。我們還更新了工具和流程,幫助您更快做好準備。我們還為 Google Play 系統(tǒng)更新添加了新功能,在 Android 12 設(shè)備上為您的應(yīng)用提供更好的運行環(huán)境。
通過 Google Play 進行更多的 Android 更新 - 我們將繼續(xù)擴大對 Google Play 系統(tǒng)更新 (Project Mainline) 的投入,為各設(shè)備上的應(yīng)用營造更一致、更安全的環(huán)境。Android 12 新增了 Android Runtime (ART) 模塊,支持向 Android 12 設(shè)備的核心運行時和庫推送更新。我們可以提高運行時的性能和正確性,更有效地管理內(nèi)存,并使 Kotlin 操作更為迅速 —— 這些都不再需要完整的系統(tǒng)更新。我們還擴展了現(xiàn)有模塊的功能,例如,我們在一個可更新模塊中提供了兼容媒體轉(zhuǎn)碼功能。
針對平板電腦、可折疊設(shè)備和電視的優(yōu)化 - 隨著越來越多的人開始在可折疊設(shè)備、平板電腦和電視等大屏幕設(shè)備上使用應(yīng)用,現(xiàn)在是確保您的應(yīng)用或游戲為這些設(shè)備做好準備的大好時機。您可以從 針對平板電腦進行優(yōu)化 和 為可折疊設(shè)備構(gòu)建應(yīng)用 開始著手。同時,針對家庭中最大的屏幕,首個適用于 Android TV 的 Android 12 預(yù)覽版也已推出。您不僅可以通過此預(yù)覽版將最新的 Android 功能帶到電視,還可以在全新的 Google TV 環(huán)境測試您的應(yīng)用。請前往 Android TV 開發(fā)者網(wǎng)站 了解更多信息并使用 ADT-3 開發(fā)者工具包 上手開發(fā)。
非 SDK 接口列表更新 - 我們增加了受限制的 非 SDK 接口,和往常一樣,我們期待著您的反饋,也歡迎您 提出公開 API 的需求。
更輕松地針對變更進行測試和調(diào)試 - 為了讓您更輕松地測試會影響應(yīng)用的可選變更,我們已經(jīng)將許多變更設(shè)置為可開關(guān)。您可以在開發(fā)者選項或 adb 中通過這些開關(guān)逐一強制啟用或停用這些變更。請訪問 官方文檔 了解詳細信息。

平臺穩(wěn)定性里程碑 - 和去年一樣,我們會提前告知我們的平臺穩(wěn)定性里程碑,讓您有更多的時間規(guī)劃應(yīng)用兼容性工作。在此里程碑,我們不僅會鎖定最終版的 SDK/NDK API,還會鎖定最終內(nèi)部 API 和面向應(yīng)用的系統(tǒng)行為。我們預(yù)計將在 2021 年 8 月抵達平臺穩(wěn)定性里程碑。這樣在正式發(fā)布前,您將有幾周的時間進行最終測試。發(fā)布時間表詳見: https://developer.android.google.cn/about/versions/12/overview
即刻開始體驗 Android 12
不論您想體驗 Android 12 的功能、測試應(yīng)用還是 提交反饋,都可以從這次的開發(fā)者預(yù)覽版開始。只需將設(shè)備系統(tǒng)映像 下載并刷入 Pixel 3 / 3 XL、Pixel 3a / 3a XL、Pixel 4 / 4 XL、Pixel 4a / 4a 5G 或 Pixel 5 設(shè)備,即可立即開始使用。如果您沒有 Pixel 設(shè)備,可以將 64 位系統(tǒng)映像刷入 Android Studio 中的 Android Emulator 使用。
設(shè)置 完畢后,您可以:
- 體驗新功能和 API - 在開發(fā)者預(yù)覽版的早期階段,您的反饋至關(guān)重要。您可以在我們的跟蹤頁報告問題,也可以前往 反饋和需求 頁面,通過特定功能的調(diào)查問卷提供直接反饋。
- 測試您現(xiàn)有應(yīng)用的兼容性 - 這是為了了解您的應(yīng)用是否受到 Android 12 中默認行為變更的影響。您只需要將當前發(fā)布的應(yīng)用安裝到運行 Android 12 的設(shè)備或模擬器上并開始測試即可。
- 使用可選變更項測試您的應(yīng)用 - Android 12 擁有可選的行為變更,這些變更僅在您的應(yīng)用以新平臺為目標時才會造成影響。盡早了解和評估這些變更非常重要。為了更易于測試,您可以 單獨啟用或禁用這些變更。
我們將在整個 Android 12 發(fā)布周期內(nèi)定期更新預(yù)覽版系統(tǒng)映像和 SDK。這次發(fā)布的初始預(yù)覽版僅供開發(fā)者使用,不面向日常或消費者使用,因此我們僅提供手動下載。您可以將系統(tǒng)映像刷入 Pixel 設(shè)備,或在運行 Android 11 的設(shè)備上加載 (sideload) OTA 映像,在后一情況下您甚至不需要解鎖引導加載程序 (bootloader) 或擦除數(shù)據(jù)。而無論使用哪種方式,在手動安裝預(yù)覽版本后,您都將能夠通過無線方式自動獲取未來所有后續(xù)預(yù)覽版和 Beta 版更新。請訪問 官方文檔 了解詳細信息。
當我們接近最終產(chǎn)品時,我們也將邀請消費者試用,屆時將開放 Android Beta 注冊。敬請關(guān)注后續(xù)信息,但目前 Android 12 尚未提供 Beta 版本。
了解本次發(fā)布的完整信息,請訪問 Android 12 開發(fā)者網(wǎng)站。