欢迎来到 Now in Android,这里会持续为您介绍 Android 开发领域的最新动态和重要资讯。
请继续阅读,了解 Android 16 QPR2 Beta 1、Android Studio Narwhal 功能版本、Jetpack Compose 1.9、Media 3 1.8、形状变形和 Compose 中的自动填充等更多内容。
您可以观看视频摘要:
我们还推出了播客。
不过,此帖子包含最深入的信息,请继续阅读!
Android 16 QPR2 Beta 1 现已推出 ✨
Android 16 QPR2 的首个 Beta 版现已推出,这是首个具有 Android 次要 SDK 版本的 Android 版本。次要 SDK 版本可以包含扩展平台功能的新 API,但不能引入targetSdkVersion受限的行为变更,从而最大限度地减少您需要针对该版本测试应用的工作量。
您可以通过将 SDK_INT_FULL 与 VERSION_CODES_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保持应用界面处于活动状态。 -
新的 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 音频设备的个人音频分享功能直接集成到系统的输出切换器中。
- 用户可以使用 HDR/SDR 亮度滑块控制 HDR 的亮度
- 照片选择器 extras 可以突出显示特定相册或搜索查询。
连接:
-
通过配套设备管理 (CDM) 增强功能,您可以提供自定义设备图标、监听
EVENT_ASSOCIATION_REMOVED回调,以及使用 DeviceId 启用跨应用验证。 -
蓝牙更新包括对
BluetoothLeScanner(ScanSettings.SCAN_TYPE_PASSIVE) 的被动扫描支持、连接丢失原因 (BluetoothDevice.EXTRA_BOND_LOSS_REASON) 和直接检索服务 UUID (BluetoothDevice.EXTRA_UUID_LE)。 -
Wi-Fi RTT 测距更新 (
RttStationRangingParams) 支持针对基站进行测距。 -
新增了
PhoneNumberManager,用于解析和验证来自 IMS P-Associated-URI 标头的电话号码。 -
MediaRouter 网络隐私保护改进功能支持通过蓝牙和 UWB 等新媒体进行投屏;您应使用系统输出选择器或请求
NEARBY_DEVICES权限以实现自定义应用内选择器。
隐私权和安全:
- 一种新的系统级安全状态“安全锁定设备”,用于锁定设备并要求进行主要身份验证才能解锁。
- 为手机盗窃防护功能添加了面向用户的切换开关,以启用/停用“身份验证失败锁定”。
开发者工作效率:
-
借助新的
AppWidgetManagerAPI,您可以查询 widget 互动指标。 - 通过 ADB 安装的可调试应用现在会收到有关 16KB 页面大小兼容性的早期警告。
-
ProfilingManager添加了对新的系统启动的性能分析触发器和requestRunningSystemTrace的支持,以捕获后台轨迹。 - 开发者选项中的“详细打印日志记录”切换开关可为 Android 打印框架提供额外的调试信息。
-
通过新的
UiAutomationAPI(用于在非默认显示屏上截取屏幕截图)和公开的AccessibilityWindowInfo.refresh,可以更可靠地测试桌面设备和多显示屏体验。 -
为新的
androidx.core:core-backported-fixes库添加了 API 支持。 - Linux 终端现在支持 GUI 应用
-
WindowInspector.addGlobalWindowViewsListener支持实时根视图更改通知。
您可以注册任何受支持的 Pixel 设备,以通过无线下载方式接收 Beta 版更新,也可以在 Android Studio 中使用 Android 模拟器搭配 64 位系统映像。平台稳定性目标时间为 2025 年 10 月。
Android Studio Narwhal Feature Drop 现已是稳定版本 - 开始使用智能体模式吧 🐳
Android Studio Narwhal 功能更新现已稳定,新功能和增强功能包括:
- Android Studio 中的 Gemini:智能体模式可用于多阶段编码任务
- 提示库 规则可根据项目需求自定义 Gemini 的 AI 输出。
- 使用 Gemini 转换界面功能使用自然语言界面来迭代 Compose 界面。
- 借助嵌入式 XR Android 模拟器、新的 XR 模板和嵌入式 XR 布局检查器,提供沉浸式开发支持
- 通过 Android 设备串流功能中的 Android 合作伙伴设备实验室扩大设备访问权限。
- 改进了 Compose 预览,包括改进的代码导航和新的 Compose 预览选择器
- 默认启用 K2 Kotlin 编译器,以提高构建性能
- 16kb 页面大小工具,包含 lint 警告、分析和模拟器,可帮助您为即将推出的 16kb 页面大小设备做好准备。
Android Device Streaming,由 Firebase 提供支持
由 Firebase 提供支持的 Android 设备串流功能已推出对 Android 合作伙伴设备实验室的稳定支持,让您可以远程连接到由 OEM 合作伙伴(包括 Samsung、小米、OPPO、OnePlus 和 vivo)托管的实体 Android 设备。
通过每月发布 Android Studio 来加快开发速度 - 发布频率比以前高出一倍
Android Studio 将改用每月发布稳定版本的节奏,以便更快地为您提供新功能和关键 bug 修复。虽然 Android Studio IDE 会每月更新,但新的 IntelliJ 平台版本会每隔几个月推出一次,功能更新会填充中间的稳定版本。Android 模拟器和 Android Gradle 插件将继续每两个月单独更新一次。这种加速发布时间表得益于我们在测试基础架构方面的长期投资。
Jetpack Compose 2025 年 8 月版的最新动态 🚀
Jetpack Compose 2025 年 8 月版(版本 1.9)现已是稳定版本。此版本引入了 Modifier.dropShadow 和 Modifier.innerShadow,用于呈现 box-shadow 效果。借助新的 onVisibilityChanged 和 onFirstVisible 修饰符,您可以跟踪元素可见性,以便进行界面更新或展示次数记录。您可以使用 TextFieldBuffer.addStyle 进行文本转换,在 OutputTransformation 中应用丰富的样式。
LazyLayout 构建块现在已稳定,您可以定义 LazyLayoutCacheWindow,以通过增强的预取功能来提升 Lazy List 和 Grid 的性能。Scrollable2D 支持二维滚动,包括滑动和嵌套滚动,并对滚动和嵌套滚动与 View 的互操作性进行了各种改进。选择启用 API (Composer.setDiagnosticStackTraceEnabled) 可在堆栈轨迹中提供更丰富的崩溃位置详细信息,建议仅用于调试 build。新的 @RememberInComposition 和 @FrequentlyChangingValue 注释以及关联的 Lint 检查已在新的运行时注释库中提供。您可以使用 Modifier.appendTextContextMenuComponents 和 Modifier.filterTextContextMenuComponents 自定义上下文菜单。现在需要使用 Android Gradle 插件 (AGP) / Lint 版本 8.8.2 或更高版本。
Media3 1.8.0 - 有哪些新变化?🚀
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 计划旨在重点介绍可应对环境挑战的 Android 应用和游戏。由 Mayla、Flávia、Andréia 和 Ariane 开发的游戏 BoRa - Iguaçu National Park 在公园游览期间提供游戏化的无障碍互动体验,用于自然教育。Louis 和 Justin 的应用 CyberTracker 可让不识字的当地追踪者通过基于图标的界面记录生物多样性数据,从而为保护工作提供支持。最后,由 Bharati 和 Saurabh 共同创办的 Earth5R 提供环境教育,并为用户提供实习和项目机会,以培养绿色经济技能。
什么是 HDR? 🌟
高动态范围 (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 的界面工具包利用 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 赋能的界面开发
Android Studio 中的 Gemini AI 可通过以下方式协助界面开发:根据设计生成代码(包括图片转代码)、使用合成数据创建 Compose 预览,以及通过直接命令优化现有界面。
使用支持运行时的 SDK
Android 14 引入了 SDK 运行时,这项新技术可将第三方 SDK 隔离在安全的单独进程沙盒中,从而增强隐私保护和安全性。
对于开发者:
- 支持运行时 (RE) 的 SDK 在此单独进程中执行。
- 支持运行时的 (RA) SDK 可充当应用中的中介。
-
使用
SdkSandboxManagerCompat加载 RE SDK,同时遵守限制条件(例如,前台、单次加载)。 - Shim 工具可简化低级进程间通信。
-
使用
SandboxedSdkView和SandboxedUiAdapter呈现 RE SDK 中的界面。 -
使用
SdkActivityLauncher从 SDK 运行时启动 activity。
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.composeanimation、foundation、material、runtime和ui,默认最低 SDK 版本已从 API 21 移至 API 23。这意味着,如果您使用的是这些 Compose 库的最新 Alpha 版,您的应用将隐式要求 Android 6.0(Marshmallow)或更高版本。
针对 Compose 开发者的主要变更:
-
新的保留 API (Compose 运行时):引入了类似于
rememberSaveable的保留 API,但适用于离开组合层次结构而未序列化的值。它的生命周期比已保存的值短,行为类似于ViewModel,为可能进入和退出组合的可组合项提供了一种新的状态管理方式。 -
增强型共享元素过渡效果(Compose 动画和界面):新增了 API,可用于动态启用/停用共享元素、考虑正在进行的过渡效果,以及在处置共享元素时设置替代目标边界。此外,还提供了一个新的
Modifier.skipToLookaheadPosition用于锚定布局。 - 改进了 Pager 预提取功能(Compose 基础库):Pager 的预提取策略现在使用“缓存窗口”(1 个视口大小)而不是单个项,并且默认启用初始预提取。此外,系统还会将项保留更长时间,以实现更流畅的滚动。
-
针对鼠标/触控板的精细焦点处理(Compose 基础库和界面):现在,当指针按下事件(来自鼠标或触控板)发生在焦点节点之外时,
ComposeViews将自动清除焦点。您可以选择停用此功能。 -
可自定义的焦点矩形 (Compose Foundation):
FocusProperties现在,您可以定义自定义焦点区域,而不是默认使用边界框,从而改进可滚动容器中的焦点遍历和“保持在视图中”逻辑。 -
LifecycleOwner 可组合项(生命周期):借助新的可组合项,可以直接在界面树中创建作用域限定的
LifecycleOwner实例。这对于独立管理组件生命周期以及对于 Navigation 等库特别有用。 -
在
SavedStateHandle(Lifecycle和SavedState)中支持可为 null 的类型:通过SavedStateHandle和SavedStateRegistryOwner中的原生支持,简化了可为 null 的属性的保存和恢复。 -
新
LineHeightStyle.Mode.Tight(Compose 基础库和界面库):新的“紧凑”模式有助于强制使用较小的行高,即使这意味着可能会剪切较高的字形,从而提供更精确的文本布局控制。 -
双击选择字词(Compose 基础):在
SelectionContainer和BasicTextField中添加了对双击选择字词的支持。 -
WindowInsets 行为变更(Compose 界面和基础库):
◦ 新增了WindowInsets.cutoutPathAPI,用于获取显示屏刘海屏的路径。
◦ 移除了isWindowInsetsDefaultPassThroughEnabled标志,默认情况下WindowInsets不会消耗,允许子视图接收它们。 -
AndroidViewrequestRectangleOnScreen修复(Compose 基础):AndroidView 发出的请求(例如,EditText尝试保持在屏幕上)现在可以正确传播到 Compose。 - 改进了 2D 鼠标滚轮滚动(Compose Foundation 和界面):更好地支持 2D 鼠标滚轮滚动事件,并提供新的测试 API 和用于控制行为的标志。
新库和实用程序:
-
androidx.core:core-backported-fixes(新库):此新库可让开发者检查设备是否已应用关键 bug 修复(例如,平台级问题,如特定摄像头 bug)。这样一来,就可以根据已知 bug 是否已解决来提供不同的用户体验。
其他值得注意的变更:
-
游戏 Activity 和输入:为
GameActivity添加了对 16KB 页面大小的默认支持和鼠标支持。 - Material3 提示定位:为提示提供更多位置提供程序,允许放置在锚点的上方、下方、左侧或右侧。
-
Material3
DatePicker修复:确保 DatePicker 在数字格式方面遵循其自身的语言区域设置,并修复 RTL 显示问题。 -
TWA display_override 支持(浏览器):添加了对
display_overrideTWA 清单属性的支持,可更好地控制 TWA 显示。 - 在外部应用(浏览器)中启动初始网址:添加了 intent 以允许在外部浏览器中启动 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、形状变形和 Compose 中的自动填充等诸多内容。
请稍后回来查看 Android 开发者社区的最新动态!
继续阅读
-
社区
Android 最近宣布推出开发者验证功能,这是一层额外的安全防护,旨在防范作恶方并增加其传播危害的难度。
Matthew Forsythe • 阅读用时:2 分钟
-
社区
等待已经结束!我们非常高兴地宣布 2026 年 Google Play Apps Accelerator 计划的入选名单。
Robbie McLachlan • 阅读用时:1 分钟
-
社区
在最新的 #WeArePlay 影片中,我们采访了 Adriano、Wagner 和 Grazyelle。这三位女性是 Matraquinha 的幕后功臣,这款应用可帮助 80 多个国家/地区的数千名无语言障碍的儿童进行交流。
Robbie McLachlan • 阅读用时:2 分钟
随时了解最新动态
每周通过电子邮件接收最新的 Android 开发洞见。