社群

Now in Android #121

閱讀時間:9 分鐘
查看 Daniel Galpin 的個人資料
Daniel Galpin 開發人員服務代表

歡迎閱讀「Android 最新動態」,這份指南會持續更新,介紹 Android 開發領域的最新消息和重要資訊。

請繼續閱讀,瞭解 Android 16 QPR2 Beta 1、Android Studio Narwhal 功能推送、Jetpack Compose 1.9、Media 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 的幾項重大更新。

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

  • 擴展深色主題選項會智慧反轉淺色應用程式,滿足偏好深色外觀的使用者。
  • 如果應用程式未提供單色圖層,系統會自動生成套用主題色的應用程式圖示。
  • 互動式選擇器工作階段會使用 ChooserManager 和 ChooserSession,在分享工作表開啟時,讓應用程式 UI 保持啟用狀態。
  • 新的 Data Transfer API 可在 Android 和 iOS 之間更可靠、安全地遷移資料,但您必須更新應用程式的資料擷取規則 XML 和 BackupAgent 實作。
  • android.graphics.pdf 套件已擴充,可支援透過 PdfRenderer.Page 加上註解及編輯 PDF 文件。
  • ViewConfiguration 值現在會根據個別虛擬裝置調整;如有多個螢幕,請改用 ViewConfiguration.get(context)。
  • 您可以透過 View.performHapticFeedback(HapticFeedbackRequest) 指定 VibrationAttributes,進一步控管觸覺回饋
  • 現在可以在 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 功能推送現已穩定,新功能和強化項目包括:

  • Gemini 版 Android Studio:Agent Mode 可用於多階段程式設計工作
  • 提示庫 規則可根據專案需求,自訂 Gemini 的 AI 輸出內容。
  • Transform UI with Gemini 使用自然語言 UI 疊代 Compose UI。
  • 沉浸式開發支援:內建 XR Android Emulator、全新 XR 範本,以及內建 XR 版面配置檢查器
  • 透過 Android 裝置串流中的 Android Partner Device Labs,擴大裝置存取權。
  • 更優質的 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.dropShadow 和 Modifier.innerShadow,用於算繪 box-shadow 效果。新的 onVisibilityChanged 和 onFirstVisible 修飾符可讓您追蹤元素是否可見,以便更新 UI 或記錄曝光。您可以使用 TextFieldBuffer.addStyle 轉換文字,在 OutputTransformation 中套用豐富樣式。

LazyLayout 建構區塊現已穩定,您可以定義 LazyLayoutCacheWindow,透過強化的預先擷取功能,提升 Lazy List 和 Grid 的效能。Scrollable2D 支援二維捲動,包括快速滑過和巢狀捲動,並針對檢視畫面的捲動和巢狀捲動互通性進行多項改善。選擇加入 API (Composer.setDiagnosticStackTraceEnabled) 可在堆疊追蹤中提供更豐富的當機位置詳細資料,建議僅用於偵錯版本。新的 @RememberInComposition 和 @FrequentlyChangingValue 註解以及相關聯的 Lint 檢查,可在新的執行階段註解程式庫中使用。您可以使用 Modifier.appendTextContextMenuComponents 和 Modifier.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 模組現在預設會延長通知顯示時間,而媒體工作階段示範應用程式則會展示繼續播放功能。新的 Composition 試用版應用程式是以 Kotlin 和 Compose 建構而成,可示範進階的多素材資源影片編輯功能。

文章 📚

#WeArePlay:認識用程式碼打造永續世界的開發人員

weareplay.webp

#WeArePlay 計畫旨在表揚致力解決環境挑戰的 Android 應用程式和遊戲。Mayla、Flávia、Andréia 和 Ariane 開發的遊戲「BoRa — Iguaçu National Park」,在遊客造訪公園時,提供遊戲化且無障礙的互動式自然教育體驗。Louis 和 Justin 的應用程式 CyberTracker 採用圖示介面,讓不識字的原住民追蹤員也能記錄生物多樣性資料,協助保育工作。最後,Earth5R 是由 Bharati 和 Saurabh 共同創立,提供環境教育,並為使用者媒合實習機會和專案,培養綠色經濟技能。

什麼是 HDR? 🌟

hdr.webp

高動態範圍 (HDR) 可讓 Android 開發人員提高峰值亮度,超越標準動態範圍 (SDR),提供更逼真的視覺效果。Android 支援影片和圖片的 HDR,包括 UltraHDR 等技術,可確保回溯相容性。

瞭解色彩涉及三個要素:

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

關於 HDR 的常見誤解:

  • 鮮豔色彩:在 HDR 出現前,已有 Display P3 和 Adobe RGB 等更廣的色域,且大多數螢幕仍會裁剪至 P3,即使是 BT.2020 內容也一樣。
  • 對比度更高/黑色細節更清晰:在同一螢幕上,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 將其套用為剪輯。揭露效果會使用 skipToLookaheadSize 和 skipToLookaheadPosition。所有這些進階動畫也與預測返回手勢相容。

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

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

使用支援執行階段的 SDK

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

開發人員:

  • 支援執行階段 (RE) 的 SDK 會在這個獨立程序中執行。
  • 執行階段感知 (RA) SDK 會在應用程式中扮演中介角色。
  • 使用 SdkSandboxManagerCompat 載入 RE SDK,並遵守相關限制 (例如前景、單次載入)。
  • Shim 工具可簡化低階處理序間通訊。
  • 使用 SandboxedSdkView 和 SandboxedUiAdapter 顯示 RE SDK 的 UI。
  • 使用 SdkActivityLauncher 從 SDK 執行階段啟動活動。

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

Wear OS Material 3 for Compose 現在可簡化形狀變形。開發人員可以輕鬆使用 IconButtonDefaults.animatedShapes 為圓形按鈕新增動畫形狀變化、使用 ButtonGroup 元件和 Modifier.animateWidth() 建立可動畫寬度變化的按鈕群組,以及建構垂直捲動清單 (TransformingLazyColumn),其中項目在接近螢幕邊緣時會使用 TransformationSpec 縮放和變形。

AndroidX 版本 🚀

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

Compose 程式庫的整體影響異動:

  • 預設 minSdk 提高至 API 23:針對 androidx.compose animation、foundation、material、runtime 和 ui,預設最低 SDK 版本已從 API 21 提高至 API 23。也就是說,如果您使用這些 Compose 程式庫的最新 Alpha 版,應用程式會隱含要求 Android 6.0 (Marshmallow) 以上版本。

Compose 開發人員適用的主要異動:

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

新程式庫和公用程式:

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

其他重要異動:

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

Android Developers Backstage

Android Developers Backstage 推出新一集內容。

Compose 的自動填入功能

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

 

現在… 👋

本期內容到此結束,我們介紹了 Android 16 QPR2 Beta 1、Android Studio Narwhal 功能更新、Jetpack Compose 1.9、Media 3 1.8、Shape Morphing 和 Compose 中的自動填入功能等。

歡迎隨時回來查看 Android 開發人員世界的最新消息!

作者:
繼續閱讀