欢迎收看 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 门控行为变更,从而最大限度地减少您需要针对其测试应用的数量。
您可以通过针对 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。 - 新的 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 的亮度
- 照片选择器额外功能可以突出显示特定相册或搜索查询。
网络连接:
- 配套设备管理 (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 可让您查询小部件互动指标。 - 通过 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 功能更新已稳定,开始使用智能体模式 🐳
Android Studio Narwhal 功能更新现已稳定,新功能和增强功能包括:
- Android Studio 中的 Gemini:智能体模式 可用于多阶段编码任务
- 提示库 规则 可根据项目的需求自定义 Gemini 的 AI 输出。
- **使用 Gemini 转换界面** 使用自然语言界面迭代 Compose 界面。
- 沉浸式开发支持,包括嵌入式 XR Android 模拟器、新的 XR 模板和嵌入式 XR 布局检查器
- 扩展的设备访问权限 :通过 Android 设备串流中的 Android 合作伙伴设备实验室。
- 更好的 Compose 预览,包括改进的代码导航和新的 Compose 预览选择器
- K2 Kotlin 编译器 默认启用,可实现更快的构建性能
- **16kb 页面大小工具** ,包括 lint 警告、分析和模拟器,可帮助您为即将推出的 16kb 页面大小设备做好准备。
Android 设备串流,由 Firebase 提供支持
Android 设备串流由 Firebase 提供支持,现已稳定支持 Android 合作伙伴设备实验室,让您可以远程连接到由 OEM 合作伙伴(包括三星、小米、OPPO、一加和 vivo)托管的实体 Android 设备。
Android Studio 每月发布一次,加快开发速度,发布频率比以往提高 2 倍
Android Studio 将过渡到每月发布稳定版,以加快为您提供新功能和关键 bug 修复的速度。虽然 Android Studio IDE 将每月更新,但每隔几个月就会推出新的 IntelliJ 平台版本,功能更新将填补中间的稳定版本。Android 模拟器和 Android Gradle 插件将继续每两个月单独更新一次。这种加快的发布时间表得到了对测试基础架构的长期投资的支持。
Jetpack Compose 2025 年 8 月版的最新动态 🚀
Jetpack Compose 2025 年 8 月版(版本 1.9)现已稳定。此版本引入了 Modifier.dropShadow 和 Modifier.innerShadow,用于渲染框阴影效果。借助新的 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 模块现在默认情况下会使通知显示更长时间,媒体会话演示应用展示了播放恢复功能。一个新的 Composition 演示应用(使用 Kotlin 和 Compose 构建)展示了高级多素材资源视频编辑功能。
文章 📚
#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 提示
适用于 Compose 的 Wear OS Material 3 现在简化了形状变化。开发者可以轻松地使用 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 Foundation): Pager 的预提取策略现在使用“缓存窗口”(1 个视口大小),而不是单个项,并且默认启用初始预提取。项也会保留更长时间,以实现更流畅的滚动。
- 针对鼠标/触控板的精细焦点处理(Compose Foundation 和界面): 现在,当指针向下事件(来自鼠标或触控板)发生在焦点节点之外时,
ComposeViews会自动清除焦点。您可以选择停用此功能。 - 可自定义的焦点矩形(Compose Foundation):
FocusProperties现在允许您定义自定义焦点区域,而不是默认使用边界框,从而改进可滚动容器中的焦点遍历和“保持在视图中”逻辑。 - LifecycleOwner 可组合项(生命周期): 新的可组合项允许直接在界面树中创建范围限定的
LifecycleOwner实例。这对于独立管理组件生命周期以及对于 Navigation 等库特别有用。 - 支持
SavedStateHandle中的可为 null 的类型(Lifecycle和 &SavedState): 借助SavedStateHandle和SavedStateRegistryOwner中的原生支持,简化了可为 null 的属性的保存和恢复。 - 新的
LineHeightStyle.Mode.Tight(Compose Foundation 和界面): 新的 Tight 模式有助于强制执行较小的行高,即使这意味着可能会剪切较高的字形,从而提供更精确的文本布局控制。 - 点按两次以选择字词(Compose Foundation): 添加了对在
SelectionContainer和BasicTextField中点按两次以选择字词的支持。 - WindowInsets 行为变更(Compose 界面和 Foundation):
◦ 新的WindowInsets.cutoutPathAPI,用于获取显示屏凹口的路径。
◦isWindowInsetsDefaultPassThroughEnabled标志已移除,默认情况下将WindowInsets设置为不使用,从而允许子 View 接收它们。 AndroidViewrequestRectangleOnScreen修复(Compose Foundation): AndroidView(例如,EditText尝试停留在屏幕上的)发出的请求现在会正确传播到 Compose。- 改进的二维鼠标滚轮滚动(Compose Foundation 和界面): 更好地支持二维鼠标滚轮滚动事件,包括新的测试 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 分钟阅读时间 -
社区Google Play 将在非洲推出首个独立游戏基金,投资 100 万美元,以帮助撒哈拉以南非洲地区的 10 家独立游戏工作室。
Steph Pio • 1 分钟阅读时间 -
社区等待已经结束!我们非常高兴与大家分享 Google Play 应用加速器 2026 年班级。
Robbie McLachlan • 1 分钟阅读时间
每周通过电子邮件接收最新的 Android 开发洞见 每周。