社群

Now in Android #121

9 分鐘閱讀
Daniel Galpin
開發人員服務代表

歡迎來到 Now in Android,這個持續更新的指南會介紹 Android 開發領域的最新消息和重要資訊。

請繼續閱讀,瞭解 Android 16 QPR2 Beta 1Android Studio Narwhal 功能發布Jetpack Compose 1.9Media 3 1.8形狀變形Compose 中的自動填入等內容。

你可以觀看影片摘要:

 

 

我們也有 Podcast

但這篇文章提供最深入的資訊,請繼續閱讀!

Android 16 QPR2 Beta 版 1 隆重登場 ✨

Android 16 QPR2 的第一個 Beta 版現已推出,這是首個搭載 Android 次要 SDK 版本的 Android 版本。次要 SDK 版本可能包含擴充平台功能的新 API,但不會造成targetSdkVersion受限的行為變更,因此您只需要針對這些版本測試應用程式,即可將測試量降到最低。

sdk-release-graph.webp

您可以針對 VERSION_CODES_FULL 列舉檢查 SDK_INT_FULL,藉此呼叫新 API:

  if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}

VERSION_CODES_FULL 無法用於 uses-sdk 資訊清單屬性。

以下列舉 QPR2 Beta 1 的幾項重大更新。

使用者介面、系統體驗和無障礙功能:

  • 擴展深色主題選項會智慧反轉淺色應用程式,適合偏好深色外觀的使用者。
  • 如果應用程式未提供單色圖層,系統可以自動生成套用主題色的應用程式圖示。
  • 互動式選擇器工作階段會在分享畫面開啟時,使用 ChooserManagerChooserSession 保持應用程式 UI 處於啟用狀態。
  • 新的 Data Transfer API 可讓 Android 和 iOS 之間的資料移轉作業更可靠安全,因此您必須更新應用程式的資料擷取規則 XML 和 BackupAgent 實作項目。
  • android.graphics.pdf 套件已擴充,支援透過 PdfRenderer.Page 註解及編輯 PDF 文件。
  • ViewConfiguration 值現在會根據個別虛擬裝置調整;如要使用多螢幕,請遷移至 ViewConfiguration.get(context)
  • 您可以指定 VibrationAttributes,進一步控制觸覺回饋 View.performHapticFeedback(HapticFeedbackRequest)
  • 現在可以將快速設定圖塊指派給 AndroidManifest.xml 檔案中的預先定義類別。

媒體與音訊:

  • 軟體解碼沉浸式音訊模型和格式 (IAMF),這是一種開放式空間音訊格式。
  • 藍牙 LE Audio 裝置的個人音訊分享功能直接整合到系統的輸出端切換器。
  • 使用者可以透過 HDR/SDR 亮度滑桿控制 HDR 亮度
  • 相片挑選器外掛程式可以醒目顯示特定相簿或搜尋查詢。

連線:

隱私權與安全性:

  • 新的系統層級安全狀態「安全鎖定裝置」會鎖定裝置,且必須通過主要驗證才能解鎖。
  • 新增「手機失竊防護」的使用者切換鈕,可啟用/停用「驗證失敗鎖定」。

開發人員生產力:

您可以註冊任何支援的 Pixel 裝置,透過無線更新接收 Beta 版更新,或在 Android Studio 中使用 Android Emulator 搭配 64 位元系統映像檔。平台穩定性預計於 2025 年 10 月推出。

Android Studio Narwhal 功能推送穩定版現已推出,歡迎開始使用「代理程式模式」🐳

narwhal.webp

Android Studio Narwhal 功能推送現已穩定,新功能和強化項目包括:

  • Android Studio 內建 Gemini:Agent Mode 可用於多階段程式設計工作
  • 提示庫 規則:根據專案需求自訂 Gemini 的 AI 輸出內容。
  • 使用 Gemini 轉換 UI:使用自然語言 UI 疊代 Compose UI。
  • 沉浸式開發支援:內建 Android Emulator for XR、全新 XR 範本,以及內建 XR 版面配置檢查器
  • 透過 Android 裝置串流,擴大裝置存取範圍 (Android 合作夥伴裝置實驗室)。
  • 更優質的 Compose 預覽:改善程式碼導覽功能,並推出新的 Compose 預覽選擇器
  • 預設啟用 K2 Kotlin 編譯器,提升建構效能
  • 16 KB 頁面大小工具,提供 Lint 警告、分析和模擬器,協助您為即將推出的 16 KB 頁面大小裝置做好準備。

Android 裝置串流 (由 Firebase 提供技術支援)

device-streaming.webp

Android 裝置串流 (由 Firebase 提供技術支援) 穩定支援 Android 合作夥伴裝置實驗室,讓您遠端連線至 OEM 合作夥伴 (包括 Samsung、小米、OPPO、OnePlus 和 vivo) 託管的實體 Android 裝置。

每月發布 Android Studio 版本,加速開發作業,發布頻率是先前的 2 倍

accelarating-releases.webp

Android Studio 將改為每月發布穩定版,以便更快提供新功能和重大錯誤修正。Android Studio IDE 每月都會更新,IntelliJ 平台新版本則每隔幾個月推出一次,功能推送則會填補這段期間的穩定版本。Android Emulator 和 Android Gradle 外掛程式仍會每兩個月分開更新。我們長期投入測試基礎架構,因此能加快發布時程。

Jetpack Compose 2025 年 8 月發布版本的新功能 🚀

jetpack-compose.webp

Jetpack Compose 2025 年 8 月版 (1.9 版) 現已穩定發布。這個版本推出 Modifier.dropShadowModifier.innerShadow,可算繪陰影效果。新的 onVisibilityChangedonFirstVisible 修飾符可讓您追蹤元素顯示狀態,以進行 UI 更新或記錄曝光次數。您可以使用 TextFieldBuffer.addStyle 進行文字轉換,在 OutputTransformation 中套用豐富的樣式。

LazyLayout 建構區塊現在已穩定,您可以定義 LazyLayoutCacheWindow,透過強化預先擷取功能提升 Lazy List 和 Grid 效能。Scrollable2D 支援二維捲動,包括快速捲動和巢狀捲動,並改善捲動和巢狀捲動與檢視區塊的互通性。選擇加入的 API (Composer.setDiagnosticStackTraceEnabled) 會在堆疊追蹤中提供更豐富的當機位置詳細資料,建議僅用於偵錯版本。新的 @RememberInComposition@FrequentlyChangingValue 註解,以及相關聯的 Lint 檢查,都可在新的執行階段註解程式庫中使用。您可以使用 Modifier.appendTextContextMenuComponentsModifier.filterTextContextMenuComponents 自訂內容選單。現在必須使用 Android Gradle 外掛程式 (AGP) / Lint 8.8.2 以上版本。

Media3 1.8.0 - 新功能 🚀

media3.webp

Media3 1.8.0 版現已推出,提供多項新功能和改善項目。ExoPlayer 新增了適用於使用者頻繁搜尋的快轉模式,您可透過 ExoPlayer.setScrubbingModeEnabled 啟用這項模式。HlsInterstitialsAdsLoader 現在支援伺服器導向的廣告插播直播。

MetadataRetriever 已更新,現在可讓您在不播放媒體項目的情況下擷取媒體項目長度。在 Transformer 中,本次發布內容引進了更快速的修剪作業,可透過 MP4 編輯清單搭配 experimentalSetMp4EditListTrimEnabled,以及透過 CodecDbLite 啟用晶片組專屬的編碼器最佳化功能,方法是在 DefaultEncoderFactory.Builder 上呼叫 setEnableCodecDbLite

其他更新包括 Downloader 中的部分下載支援 (使用 PreCacheHelper)、ExoPlayer 中的自動 XR 音訊路徑,以及更有效率的 MediaCodec 互動。MediaSession 模組現在預設會延長通知顯示時間,媒體工作階段試用版應用程式則會展示播放續播功能。我們以 Kotlin 和 Compose 建構了全新的 Composition 試用版應用程式,展示進階的多素材資源影片編輯功能。

文章 📚

#WeArePlay:認識為永續發展世界編碼的人們

weareplay.webp

#WeArePlay 計畫旨在表揚有助於解決環境問題的 Android 應用程式和遊戲。Mayla、Flávia、Andréia 和 Ariane 開發的遊戲 BoRa - Iguaçu National Park,在遊客參觀公園時提供遊戲化且容易上手的互動式體驗,寓教於樂。Louis 和 Justin 開發的 CyberTracker 應用程式提供以圖示為主的介面,讓不識字的當地追蹤員也能記錄生物多樣性資料,協助保育工作。最後,由 Bharati 和 Saurabh 共同創立的 Earth5R 提供環境教育,並為使用者提供實習和專案機會,培養綠色經濟相關技能。

什麼是 HDR? 🌟

hdr.webp

高動態範圍 (HDR)可讓 Android 開發人員將峰值亮度調高至超出標準動態範圍 (SDR),進而提升影像保真度。Android 支援影片和圖片的 HDR,包括可回溯相容的 UltraHDR 等技術。

瞭解色彩包含三個元件:

  • 位元深度:定義色彩呈現的精確度,深度越高,色彩轉換越平滑。
  • 轉換函式:將數值像素值對應至顯示的亮度或顏色,並根據非線性的人類視覺反應進行調整。例如 sRGB、HLG 和 PQ。
  • 色域:代表裝置可重現的顏色範圍。

關於 HDR 的常見誤解:

  • 鮮豔色彩:在 HDR 推出前,Display P3 和 Adobe RGB 等更廣泛的色域就已存在,即使是 BT.2020 內容,大多數螢幕仍會剪輯至 P3。
  • 對比度更高/黑色細節更豐富:在同一部螢幕上,HDR 本身不會比 SDR 呈現更深沉的黑色。OLED 螢幕可提供無限對比度,雖然 PQ 會為暗部區域分配更多位元,但這並非通用 HDR 功能。
  • 位元深度較高:部分 HDR 影片設定檔 (例如 HDR10) 使用 10 位元或 12 位元串流,但這是這些設定檔的特點,並非 HDR 本身所具備;其他影像格式也常見位元深度較高的情況。

HDR 主要代表 更高的峰值亮度。這個「HDR 預留空間」定義為相對於 SDR 的浮動區域。傳統 HDR 影片通常會編碼固定動態範圍,但現代螢幕使用動態範圍,因此可能導致品質差異。Ultra HDR 和增益對映等技術可有效運用位元,提供替代方案。Android 的 UI 工具包會使用 extendedRangeBrightness API 提供 HDR 體驗,即使是 RGBA_8888 也是如此。

影片 📹

使用形狀變形效果的進階共用元素 | Jetpack Compose 提示

Jetpack Compose 現在支援進階共用元素轉換、精細的形狀變形和顯示動畫。開發人員可以在應用程式的頂層設定 SharedTransitionLayout,並使用 Modifier.sharedBounds 連結元素。

形狀變形是主要的新功能,可運用 Material 3 的 AndroidX 圖形形狀程式庫達成。這包括建立具有定義開始/結束形狀的 Morph 物件、使用 animateFloat (來自 AnimatedVisibilityScope) 驅動其進度,以及透過自訂 OverlayClip 將其套用為剪輯片段。顯示效果會使用 skipToLookaheadSizeskipToLookaheadPosition。所有這些進階動畫也與預測返回手勢相容。

Android Studio 內建多模態 Gemini:AI 輔助 UI 開發

Android Studio 中的 Gemini AI 可從設計稿生成程式碼 (包括圖片轉程式碼),使用合成資料建立 Compose 預覽畫面,以及透過直接指令調整現有 UI,協助您開發 UI。

使用支援執行階段的 SDK

Android 14 推出 SDK 執行階段,這項新技術可將第三方 SDK 隔離在安全的獨立程序沙箱中,進一步提升隱私權和安全性。

開發人員:

  • 支援執行階段 (RE) 的 SDK 會在這個獨立程序中執行。
  • 支援執行階段 (RA) 的 SDK 會在應用程式中擔任中介角色。
  • 使用 SdkSandboxManagerCompat 載入 RE SDK,並遵守限制 (例如前景、單一載入)。
  • 墊片工具可簡化低階的程序間通訊。
  • 使用 SandboxedSdkViewSandboxedUiAdapter,從 RE SDK 算繪 UI。
  • 使用 SdkActivityLauncher 從 SDK 執行階段啟動活動。

WearOS Material Design 3 形狀變形 | Jetpack Compose 提示

Compose 適用的 Wear OS Material 3 現在可簡化形狀變形作業。開發人員可以輕鬆使用 IconButtonDefaults.animatedShapes,在圓形按鈕中加入形狀變化的動畫效果;使用 ButtonGroup 元件和 Modifier.animateWidth() 建立按鈕群組,讓寬度變化產生動畫效果;以及建構垂直捲動清單 (TransformingLazyColumn),讓項目在接近螢幕邊緣時使用 TransformationSpec 縮放及變形。

AndroidX 版本發布 🚀

以下摘要說明 AndroidX 的異動內容,並優先列出與 Android 應用程式開發人員最相關的項目:

Compose 程式庫的整體影響變化:

  • 預設minSdk提升至 API 23:對於 androidx.composeanimationfoundationmaterialruntimeui,預設最低 SDK 版本已從 API 21 移至 API 23。也就是說,如果您使用這些 Compose 程式庫的最新 Alpha 版,應用程式會隱含要求 Android 6.0 (Marshmallow) 以上版本。

Compose 開發人員的主要異動:

  • 新保留 API (Compose 執行階段):推出類似 rememberSaveable 的保留 API,但適用於離開組合階層且未序列化的值。與儲存的值相比,它具有較短的生命週期,且行為與 ViewModel 類似,可為可能進入和退出組合項的可組合函式提供新的狀態管理方式。
  • 強化共用元素轉換 (Compose 動畫和 UI):新增 API,可動態啟用/停用共用元素、考量進行中的轉換,以及在共用元素遭到處置時設定替代目標界線。此外,還提供新的 Modifier.skipToLookaheadPosition,可錨定版面配置。
  • 改善分頁器預先擷取功能 (Compose Foundation):分頁器的預先擷取策略現在會使用「快取視窗」(1 個可視區域大小),而非單一項目,且預設會啟用初始預先擷取功能。系統也會保留項目較長時間,讓捲動更順暢。
  • 滑鼠/觸控板的焦點處理機制經過改良 (Compose Foundation 和 UI):現在,當指標向下事件 (來自滑鼠或觸控板) 發生在焦點節點外部時,ComposeViews 會自動清除焦點。你可以選擇停用這項功能。
  • 可自訂的焦點矩形 (Compose Foundation): FocusProperties 現在可讓您定義自訂焦點區域,而非預設為定界框,改善可捲動容器中的焦點周遊和「保持在檢視畫面中」邏輯。
  • LifecycleOwner 可組合函式 (生命週期):這個新可組合函式可直接在 UI 樹狀結構中建立範圍內的 LifecycleOwner 執行個體。這項功能特別適合獨立管理元件生命週期,以及用於 Navigation 等程式庫。
  • 支援 SavedStateHandle 中的可為空值型別 (LifecycleSavedState):SavedStateHandleSavedStateRegistryOwner 中提供原生支援,簡化可為空值屬性的儲存和還原作業。
  • LineHeightStyle.Mode.Tight (Compose 基礎和 UI):即使可能截斷較高的字形,新的「緊密」模式仍會強制縮小行高,提供更精確的文字版面配置控制項。
  • 輕觸兩下即可選取字詞 (Compose Foundation):新增支援在 SelectionContainerBasicTextField 中輕觸兩下選取字詞。
  • WindowInsets 行為變更 (Compose UI 和基礎):
    ◦ 新增 WindowInsets.cutoutPath API,可取得螢幕凹口的路徑。
    ◦ 移除 isWindowInsetsDefaultPassThroughEnabled 標記,預設為消耗 WindowInsets,允許子項 View 接收。
  • AndroidView requestRectangleOnScreen修正 (Compose Foundation):AndroidView 發出的要求 (例如EditText嘗試留在畫面上) 現在會正確傳播至 Compose。
  • 改良 2D 滑鼠滾輪捲動功能 (Compose Foundation 和 UI):更完善地支援 2D 滑鼠滾輪捲動事件,並提供新的測試 API 和控制行為的標記。

新程式庫與公用程式:

  • androidx.core:core-backported-fixes (新程式庫):開發人員可透過這個新程式庫,檢查裝置是否已套用重大錯誤修正 (例如特定攝影機錯誤等平台層級問題)。這樣一來,您就能根據已知錯誤是否已修正,提供不同的使用者體驗。

其他重大異動:

  • 遊戲活動和輸入:新增 16 KB 分頁大小的預設支援,以及 GameActivity滑鼠支援
  • Material3 工具提示位置:工具提示提供更多位置供應器,可放置在錨點上方、下方、左側或右側。
  • Material3 DatePicker修正:確保 DatePicker 會根據自己的語言代碼設定數字格式,並修正 RTL 顯示問題。
  • 支援 TWA display_override (瀏覽器):新增支援 display_override TWA 資訊清單屬性,可進一步控管 TWA 顯示畫面。
  • 在外部應用程式 (瀏覽器) 中啟動初始網址:新增 Intent,允許在外部瀏覽器中啟動 TWA 的初始網址。

Android Developers Backstage

Android Developers Backstage 推出新一集節目。

Compose 中的自動填入功能

Jetpack Compose 1.8 運用 Compose 的語意系統,大幅改善自動填入功能。開發人員現在只要使用相關內容類型語意 (例如使用者名稱、密碼) 標記文字欄位,即可輕鬆整合系統層級的自動填入功能,不必手動管理自動填入樹狀結構,還能提升效能。

 

那麼… 👋

本期內容就到此為止,涵蓋 Android 16 QPR2 Beta 版 1Android Studio Narwhal 功能發布Jetpack Compose 1.9Media 3 1.8形狀變形Compose 中的自動填入等主題。

請稍後回來查看 Android 開發人員宇宙的最新消息!

撰寫者:

繼續閱讀