作者 / Dave Burke, VP of Engineering
讓 Android 在數十億用戶的手中良好運行,是我們、Android 設備制造商,以及開發者社區的一致追求。
今天,我們為大家帶來 Android 14 的第一個開發者預覽版。大家針對預覽版提出的反饋具有重要意義,必將惠及 Android 生態中的每一個人。我們在 Android 14 中繼續提升開發者生產力,并在性能、隱私、安全和用戶定制方面不斷改進。這個預覽版僅僅是個開始,我們會在后續的發布中和大家分享更多內容。 每一年 Android 都會帶來改進和新的功能,在這一路的進化過程中,大家在 Android 14 開發者預覽版和季度平臺發布 (Quarterly Platform Release, QPR) Beta 版測試計劃中提交的反饋至關重要。我們在 Android 14 開發者網站提供了很多關于本次預覽版的信息,包括 Pixel 系統映像的下載和發布時間表。非常期待聽到大家的想法,在這里我們提前感謝大家,是大家的持續支持,讓 Android 能成為屬于每一個人的平臺!
-
Android 14 開發者網站
https://developer.android.google.cn/about/versions/14
跨設備以及多尺寸屏幕的支持
Android 14 在 Android 12L 和 13 的基礎上,繼續對平板電腦和可折疊設備帶來良好的支持。為了幫助您構建適配各種屏幕尺寸的應用,我們在 Jetpack Compose 中提供了窗口大小類別、滑動窗格布局 (SlidingPaneLayout)、Activity 嵌入,以及使用約束布局的 Box (BoxWithConstraints) 等內容。隨著每一次平臺更新,我們都會幫助您更輕松地在所有 Android 支持的屏幕上優化自己的應用。
- 窗口大小類別https://developer.android.google.cn/guide/topics/large-screens/support-different-screen-sizes#window_size_classes
- 滑動窗格布局https://developer.android.google.cn/guide/topics/large-screens/support-different-screen-sizes#SlidingPaneLayout
- Activity 嵌入https://developer.android.google.cn/guide/topics/large-screens/activity-embedding
- 使用約束布局的 Boxhttps://developer.android.google.cn/reference/kotlin/androidx/compose/foundation/layout/package-summary#BoxWithConstraints(androidx.compose.ui.Modifier,androidx.compose.ui.Alignment,kotlin.Boolean,kotlin.Function1)
-
大屏幕設備應用質量指南
https://developer.android.google.cn/docs/quality-guidelines/tablet-app-quality
-
大屏幕使用入門
https://developer.android.google.cn/guide/topics/large-screens/get-started-with-large-screens
-
為可折疊設備構建應用
https://developer.android.google.cn/guide/topics/ui/foldables
-
通過大屏設備擴展用戶體驗
https://developer.android.google.cn/large-screens/gallery
-
多類別應用的設計參考
https://developer.android.google.cn/large-screens/gallery/social
https://developer.android.google.cn/large-screens/gallery/media
https://developer.android.google.cn/large-screens/gallery/productivity
https://developer.android.google.cn/large-screens/gallery/shopping
https://developer.android.google.cn/large-screens/gallery/reading
-
構建多設備體驗
https://developer.android.google.cn/multi-device-development
-
跨設備 SDK
https://developer.android.google.cn/guide/topics/connectivity/cross-device-sdk/overview
精簡后臺工作
我們在 Android 14 中繼續優化應用的協作方式,以改善系統健康狀況和電池壽命,并提升終端用戶體驗。
針對 JobScheduler 和前臺服務的更新和補充
有些后臺工作,比如僅使用 Wi-Fi 下載大型文件,其復雜度很高,這顯然是不必要的。我們正在為這些工作打造一個標準方案,以簡化您的應用開發工作,進而改善用戶體驗。我們也在規范前臺服務的使用,只為面向用戶的最高優先級任務保留這些服務,以便改善 Android 的資源消耗和電池壽命。 Android 14 中對一些現有的 Android API(包括 Foreground Services 和 JobScheduler) 進行了變更,加入了支持用戶發起的數據傳輸的新功能。我們還更新了聲明前臺服務類型的要求。用戶發起的數據傳輸作業將簡化用戶發起的下載和上傳的管理,特別是傳輸存在限制的時候,比如僅使用 Wi-Fi 進行下載。聲明前臺服務類型的要求可以讓開發者清楚地定義應用的后臺工作意圖,同時明確哪些使用場景適合前臺服務。此外,Google Play 將推出新政策,以確保開發者合理使用上述 API,后續我們會公布這方面的更多信息。
-
Foreground Services
https://developer.android.google.cn/guide/components/foreground-services
-
JobScheduler
https://developer.android.google.cn/reference/android/app/job/JobScheduler
-
用戶發起的數據傳輸
https://developer.android.google.cn/about/versions/14/changes/user-initiated-data-transfers
-
聲明前臺服務類型
https://developer.android.google.cn/about/versions/14/changes/fgs-types-required
廣播優化
我們對內部廣播系統進行了諸多優化,以改善系統健康,加快反應速度。雖然大多數優化措施限于 Android 內部,不會影響到您的應用,但我們已經調整了應用進入緩存狀態后接收上下文注冊的廣播的方式。所有發送給上下文注冊接收器的廣播都要排隊,只有在應用離開緩存狀態后才會被傳遞給應用。此外,一些重復的上下文注冊廣播,如 BATTERY_CHANGED,可能會被合并為一個最終廣播,并在應用離開緩存狀態時完成交付。
-
上下文注冊的接收器
https://developer.android.google.cn/guide/components/broadcasts#context-registered-receivers
-
緩存狀態
https://developer.android.google.cn/guide/components/activities/process-lifecycle
-
BATTERY_CHANGED
https://developer.android.google.cn/reference/android/content/Intent#ACTION_BATTERY_CHANGED
精確鬧鐘
調用精確鬧鐘會明顯消耗設備的資源,如電池壽命。因此在 Android 14 中,新安裝的以 Android 13+ (SDK 33+) 為目標平臺的應用,如果其并非時鐘或日歷應用,必須在設置精確鬧鐘之前要求用戶授予 SCHEDULE_EXACT_ALARM 特殊權限。應用可以通過 Intent 將用戶引導至設置頁面進行授權操作,但我們建議大家仔細評估應用使用場景,盡可能選擇更加靈活的鬧鐘替代方案。
-
精確鬧鐘
https://developer.android.google.cn/training/scheduling/alarms#exact
-
SCHEDULE_EXACT_ALARM
https://developer.android.google.cn/reference/android/Manifest.permission#SCHEDULE_EXACT_ALARM
-
請求特殊權限
https://developer.android.google.cn/training/permissions/requesting-special
-
引導至設置頁面
https://developer.android.google.cn/training/permissions/requesting-special#request
-
更加靈活的鬧鐘替代方案
https://developer.android.google.cn/training/scheduling/alarms#use-cases
-
USE_EXACT_ALARM
https://developer.android.google.cn/reference/android/Manifest.permission#USE_EXACT_ALARM
-
Play 政策: 使用精確鬧鐘權限的可接受用例
https://support.google.com/googleplay/android-developer/answer/12253906#exact_alarm_preview
定制化
我們將繼續保障 Android 用戶圍繞其個人需求的定制化體驗,為此我們進一步改進了無障礙和國際化功能。更大的字體與非線性縮放 從 Android 14 開始,用戶能夠把字體尺寸放大至 200%。此前,Pixel 設備上的字體最多能放大至 130%。 為了緩解文字過大帶來的問題,從 Android 14 開始,字體縮放曲線會是非線性的,且該縮放方案會直接啟用。這樣就可以確保已經足夠大的文本的放大速度不會和較小的文本相同。
△ (左) 未放大(中) 線性放大至 200%
(右) 非線性放大至 200%
在 Android 14 中,開發者需要使用最大的字體尺寸來測試應用的界面。請前往無障礙 > 顯示大小和文字 (Accessibility > Display size and text) 頁面設置字體大小。請確保調整后的大字體設置能被反映在界面中,并且不會出現文字截斷等問題。我們的文檔提供了這方面的最佳實踐供大家參考:http://developer.android.google.cn/about/versions/14/features#non-linear-font-scaling
按應用設定語言偏好 現在可以通過 LocaleManager.setOverrideLocaleConfig 動態更新應用的 localeConfig,以定制 Android 設置頁面中每個應用各自的語言列表中顯示的語言清單。這樣您就可以為每個地區定制語言列表,進行 A/B 實驗,如果應用使用服務器端推送本地化設置,則可以直接為應用更新語言地區設置。
-
LocaleManager.setOverrideLocaleConfig
https://developer.android.google.cn/reference/android/app/LocaleManager?hl=en#setOverrideLocaleConfig(android.app.LocaleConfig)
IME 現在可以使用 LocaleManager.getApplicationLocales 來獲取當前應用的界面語言,從而同步更新鍵盤語言。
-
LocaleManager.getApplicationLocales
https://developer.android.google.cn/reference/android/app/LocaleManager#getApplicationLocales()
詞形變化 API 詞形變化 (Grammatical Infection) API 可以讓開發者更輕松地為需要使用語法性別的用戶提供支持:https://developer.android.google.cn/about/versions/14/features#grammatical-inflection例如:
- 陽性: "Vous êtes abonné à..."
- 陰性: "Vous êtes abonnée à…"
- 中性: "Abonnement à…activé"
語法性別是某些語言中特有的語法現象,而且在一些非英語語言中很難規避。這個新 API 可以讓開發者更容易針對使用者性別 (這里指的是正在瀏覽界面的人,而不是正在被提及的人) 展示內容。而如果在 ICU 中使用 SelectFormat,就只能基于每個字符串單獨進行設置了。 開發者只需為相應的語言添加性別變位譯文,并使用這個 API,即可為不同用戶展示定制化的譯文。
隱私和安全
運行時接收器 以 Android 14 為目標平臺的應用必須說明動態 Context.registerReceiver() 的使用是否應被視為 "導出" 或 "未導出"。這是以前版本中清單級工作的延續,請訪問官方文檔了解詳細信息:https://developer.android.google.cn/about/versions/14/behavior-changes-14#runtime-receivers-exported
-
Context.registerReceiver()
https://developer.android.google.cn/reference/android/content/Context#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter,%20int)
更加安全的動態代碼加載
動態代碼加載 (Dynamic code loading, DCL) 為惡意軟件和漏洞提供了可能,因為動態下載的可執行文件可能被意外修改,導致代碼注入問題。以 Android 14 為目標平臺的應用動態加載的文件需要標記為只讀。請訪問官方文檔了解詳細信息:https://developer.android.google.cn/about/versions/14/behavior-changes-14#safer-dynamic-code-loading
阻止應用安裝
惡意軟件通常以較舊的 API 級別為目標,以繞過較新的 Android 版本中引入的安全和隱私保護措施。因此,從 Android 14 開始,targetSdkVersion 低于 23 的應用將無法安裝。之所以選擇這個特定的版本,是因為一些惡意應用使用 targetSdkVersion 22 來避免受到 2015 年 Android 6.0 (API 級別 23) 引入的運行時權限模式的影響。
-
targetSdkVersion
https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element
adb install --bypass-low-target-sdk-block FILENAME.apk
憑證管理器和 Passkey 支持 我們最近發布了憑證管理器 (Credential Manager) 的 Alpha 版本,這是一個新的 Jetpack API,用于簡化用戶的認證流程,同時也通過使用 Passkey 來提高安全性。Passkey 是一種代替密碼和其他易受攻擊的認證方式的新方案,其安全性有顯著的提升。對用戶來說也更方便,他們只需要在任何設備上進行一次生物識別就可以安全地登錄。請閱讀官方博文了解詳細信息:
https://android-developers.googleblog.com/2023/02/bringing-together-sign-in-solutions-and-passkeys-android-new-credential-manager.html?m=1
-
讓用戶使用憑證管理器登錄
https://developer.android.google.cn/training/sign-in/passkeys
應用兼容性
在發布新的平臺版本時,我們會優先考慮應用的兼容性,以讓更新過程更快、更順暢。在 Android 14 中,大多數面向應用的變更依然是可選的,這樣能為大家提供更多的時間進行調整和適配。我們還更新了工具和流程,幫助大家更快地做好準備。 OpenJDK 17 支持 - 預覽版已支持 300 個 OpenJDK 17 類。我們正在努力為后續的開發者預覽版帶來完整的 Java 17 語言功能。這些功能包括記錄類、多行字符串和 instanceof 模式匹配。通過 Google Play 系統更新 (Project Mainline),超過 6 億臺設備能夠獲得最新的 Android Runtime (ART) 更新,包括對 OpenJDK 17 的支持。這也是我們的承諾之一,即為應用提供跨設備、更加一致、更加安全的環境,并且在平臺版本更新之外持續為用戶帶來新特性和新功能。
-
Google Play 系統更新
https://android-developers.googleblog.com/2019/05/fresher-os-with-projects-treble-and-mainline.html
△ 開發者選項中的應用兼容性開關平臺穩定性里程碑 - 和去年一樣,我們會提前向您告知平臺穩定性里程碑,讓您有更多的時間來規劃應用兼容性工作。在抵達這個里程碑時,我們不僅會交付最終版 SDK/NDK API,還會鎖定最終版的內部 API 和面向應用的系統行為。我們預計將在 2023 年 6 月抵達平臺穩定里程碑,這樣在正式版本發布之前,您還會有幾周的時間進行最終測試。發布時間表詳見:https://developer.android.google.cn/about/versions/14/overview
即刻開始體驗 Android 14
不論您是想體驗 Android 14 的功能、測試應用還是提交反饋,都可以從這次的開發者預覽版開始。如果您想要測試應用在平板電腦和可折疊設備上的兼容性,最簡單的方法是使用 Android Studio SDK 管理器最新預覽版中 Android 模擬器的平板電腦或可折疊設備配置進行測試。對于手機,只需將系統映像下載并刷入 Pixel 7 Pro / 7 / 6a / 6 Pro / 6 / 5a 5G / 5 / 4a (5G) 設備,即可立即開始使用。如果您沒有 Pixel 設備,則可以在 Android Studio 中使用帶有 64 位系統映像的 Android 模擬器。
-
反饋與需求
https://developer.android.google.cn/about/versions/14/feedback
-
安裝 SDK
https://developer.android.google.cn/about/versions/14/setup-sdk#install-sdk
-
獲取系統映像
https://developer.android.google.cn/about/versions/14/download
為了獲得最佳的 Android 14 開發體驗,我們建議您使用 Android Studio Giraffe 的最新預覽版或更高版本。
-
Android Studio Giraffe
https://developer.android.google.cn/studio/preview
設置好 SDK 后,您可以:
-
體驗新功能和 API - 在開發者預覽版的早期階段,您的反饋至關重要。您可以在我們的跟蹤頁報告問題:
https://developer.android.google.cn/about/versions/14/feedback
-
測試應用的兼容性 - 測試您的應用是否受到 Android 14 默認行為變更的影響。請將應用安裝到運行 Android 14 的設備或模擬器上進行徹底的測試。
-
使用可選變更項測試應用 - Android 14 提供了可選的行為變更,這些變更僅在您的應用以新平臺為目標時才會造成影響。盡早了解和評估這些變更十分重要。為了便于測試,您可以單獨啟用或者禁用這些變更:
https://developer.android.google.cn/about/versions/14/reference/compat-framework-changes
-
設置 Android 14 SDK
https://developer.android.google.cn/about/versions/14/setup-sdk
https://developer.android.google.cn/about/versions/14/get
如果您打算從 Android 13 QPR Beta 版轉移到 Android 14 開發者預覽版,并且不想擦除您的設備,我們建議您現在就安裝本次的開發者預覽版 1,否則之后 Android 13 Beta 版可能發布構建日期更新的版本,屆時您就無法在不擦除數據的情況下直接安裝 Android 14 開發者預覽版了。
-
Android 13 QPR Beta 版
https://developer.android.google.cn/about/versions/13/get-qpr
* Java 和 OpenJDK 是 Oracle 和/或其附屬公司的商標或注冊商標。
?點擊屏末|閱讀原文|進一步了解 Android 14 詳細更新
原文標題:Android 14 首個開發者預覽版到來
文章出處:【微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
-
谷歌
+關注
關注
27文章
6142瀏覽量
105100
原文標題:Android 14 首個開發者預覽版到來
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論