欢迎观看 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 的亮度。
- 照片选择器额外功能可以突出显示特定相册或搜索查询。
网络连接:
- 配套设备管理 (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 Runtime): 引入了类似于
rememberSaveable的保留 API,但适用于离开组合层次结构而不进行序列化的值。它的生命周期比保存的值短,行为类似于ViewModel,为管理可能会进入和退出组合的可组合项的状态提供了一种新方法。 - 增强的共享元素转换(Compose 动画和界面): 新 API 可动态启用/停用共享元素、考虑正在进行的转换,以及在处置共享元素时设置替代目标边界。此外,还提供了一个新的
Modifier.skipToLookaheadPosition,用于锚定布局。 - 改进的 分页器 预提取(Compose Foundation): 分页器 的预提取策略现在使用“缓存窗口”(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 应用加速器 2026 届学员名单。
Robbie McLachlan • 1 分钟阅读时间
-
社区
在最新的 #WeArePlay 影片中,我们采访了 Adriano、Wagner 和 Grazyelle。这三人是 Matraquinha 的幕后团队,这款应用帮助 80 多个国家/地区的数千名不会说话的孩子进行交流。
Robbie McLachlan • 2 分钟阅读时间
随时了解最新动态
每周通过电子邮件接收最新的 Android 开发洞见。 每周。