Android 17 已发布 Beta 版 4,这是此发布周期中计划的最后一个 Beta 版,是应用兼容性和平台稳定性的重要里程碑。无论您是微调应用的用户体验、确保流畅的边缘到边缘渲染,还是利用最新的 API,Beta 版 4 都能提供您进行测试所需的近乎最终的环境。
让您的应用、库、工具和游戏引擎做好准备!
如果您开发 Android SDK、库、工具或游戏引擎,那么现在准备好任何必要的更新至关重要,这样可以防止您的下游应用和游戏开发者因兼容性问题而受阻,并允许他们以最新的 SDK 功能为目标。如果需要更新才能完全支持 Android 17,请告知您的下游开发者。
测试包括使用 Google Play 或其他方式将您的正式版应用或使用您的库或引擎的测试应用安装到搭载 Android 17 Beta 版 4 的设备或模拟器上。完成应用的所有流程,并查找功能或界面问题。每个 Android 版本都包含平台变更,旨在提升隐私保护、安全性以及整体用户体验;请查看对在 Android 17 上运行的应用和以 Android 17 为目标平台的应用有影响的行为变更,以便有重点地进行测试,包括以下内容:
- 在大屏幕上调整大小: 以 Android 17 为目标平台后,您将无法选择退出在大屏幕上维护屏幕方向、调整大小和宽高比限制。
- 动态代码加载: 如果您的应用以 Android 17 或更高版本为目标平台,则在 Android 14 中引入的针对 DEX 和 JAR 文件的更安全的动态代码加载 (DCL) 保护措施现在扩展到原生库。使用 System.load() 加载的所有原生文件都必须标记为只读。否则,系统会抛出 UnsatisfiedLinkError。
- 默认启用 CT:证书透明度 (CT)默认处于启用状态。(在 Android 16 上,CT 可用,但应用必须 选择启用。)
- 本地网络保护: 以 Android 17 或更高版本为目标平台的应用默认会阻止本地网络访问。如果可以,请切换为使用注重隐私保护的选择器,并使用新的 ACCESS_LOCAL_NETWORK 权限进行广泛的持久访问。
- 后台音频强化: 从 Android 17 开始,音频框架会强制执行对后台音频互动(包括音频播放、音频焦点请求和音量更改 API)的限制。根据您的反馈,自 Beta 版 2 以来,我们进行了一些更改,包括在应用使用期间强制执行 FGS 的 targetSDK 门控,以及豁免闹钟音频。如需了解完整详情,请参阅更新后的指南。
应用内存限制
Android 将根据设备的 RAM 总容量引入应用内存限制,以便为您的应用和 Android 用户打造更稳定、更确定的环境。在 Android 17 中,限制设置得较为保守,旨在建立系统基准,以便在极端内存泄漏和其他异常值触发系统范围的不稳定性(导致界面卡顿、耗电过快和应用被终止)之前,以这些异常值为目标。虽然我们预计对绝大多数应用会话的影响很小,但我们建议您遵循以下内存最佳实践,包括建立内存基准。
在当前实现中,如果您的应用受到影响,ApplicationExitInfo 中的 getDescription 将包含字符串“MemoryLimiter”。您还可以将 基于触发器的性能分析 与 TRIGGER_TYPE_ANOMALY 搭配使用,以获取在达到内存限制时收集的堆转储。
为了帮助您查找内存泄漏,Android Studio Panda 直接在 Android Studio 性能分析器中添加了 LeakCanary 集成,作为 IDE 中上下文化的专用任务,并与您的源代码完全集成。
更小的内存占用空间直接转化为更流畅的性能、更长的电池续航时间和所有外形规格的高级体验。让我们携手为 Android 生态系统打造更快、更可靠的未来!
应用异常的性能分析触发器
Android 引入了一项设备端异常检测服务,用于监控资源密集型行为和潜在的兼容性回归。此服务与 ProfilingManager 集成,可让您的应用接收由特定系统检测到的事件触发的性能分析工件。
使用 TRIGGER_TYPE_ANOMALY 触发器检测系统性能问题,例如过多的 Binder 调用和过多的内存使用量。当应用违反操作系统定义的内存限制时,异常触发器允许开发者接收应用专用的堆转储,以帮助识别和修复内存问题。此外,对于过多的 Binder 垃圾内容,异常触发器会提供 Binder 事务的堆栈抽样性能分析。
此 API 回调发生在系统强制执行任何操作之前。例如,它可以帮助开发者在应用因超出内存限制而被系统终止之前收集调试数据。如需了解如何使用触发器,请查看我们关于基于触发器的性能分析的文档。
val profilingManager = applicationContext.getSystemService(ProfilingManager::class.java) val triggers = ArrayList<ProfilingTrigger>() triggers.add(ProfilingTrigger.Builder( ProfilingTrigger.TRIGGER_TYPE_ANOMALY)) val mainExecutor: Executor = Executors.newSingleThreadExecutor() val resultCallback = Consumer<ProfilingResult> { profilingResult -> if (profilingResult.errorCode != ProfilingResult.ERROR_NONE) { // upload profile result to server for further analysis setupProfileUploadWorker(profilingResult.resultFilePath) } profilingManager.registerForAllProfilingResults(mainExecutor, resultCallback) profilingManager.addProfilingTriggers(triggers) }
Android Keystore 中的后量子加密 (PQC)
Android Keystore 添加了对 NIST 标准化 ML-DSA(基于模块格的数字签名算法)的支持。在受支持的设备上,您可以生成 ML-DSA 密钥,并使用它们在设备的安全硬件中完全生成量子安全签名。Android Keystore 通过标准 Java 加密架构 API(KeyPairGenerator、KeyFactory 和 Signature)公开 ML-DSA-65 和 ML-DSA-87 算法变体。如需了解更多详情,请参阅我们的 开发者文档。
KeyPairGenerator generator = KeyPairGenerator.getInstance( “ML-DSA-65”, "AndroidKeyStore"); generator.initialize( new KeyGenParameterSpec.Builder( “my-key-alias”, KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY) .build()); KeyPair keyPair = generator.generateKeyPair();
开始使用 Android 17
您可以注册任何受支持的 Pixel 设备,以通过无线下载方式获取此 Android Beta 版更新和未来的 Android Beta 版更新。如果您没有 Pixel 设备,可以在 Android Studio 中使用 Android 模拟器的 64 位系统映像。
如果您目前参与了 Android Beta 版计划,系统会向您提供 Beta 版 4 的无线下载更新。
请继续在反馈页面上报告问题和提交功能请求。我们越早收到您的反馈,在最终版本的开发工作中采纳的意见就越多。
为了获得 Android 17 的最佳开发体验,我们建议您使用最新预览版 Android Studio (Panda)。设置完成后,您应执行以下操作:
- 使用新版 SDK 进行编译,在 CI 环境中进行测试,并在反馈页面上的跟踪器中报告任何问题。
- 测试当前应用的兼容性,了解您的应用是否受到 Android 17 中变更的影响,并将您的应用安装到搭载 Android 17 的设备或模拟器上,并进行全面测试。
在整个 Android 17 发布周期中,我们会定期更新预览版/Beta 版系统映像和 SDK。安装 Beta 版 build 后,您将自动通过无线下载方式获取所有后续预览版和 Beta 版的未来更新。
如需了解完整信息,请访问Android 17 开发者网站。
加入对话
您的反馈仍然是我们最宝贵的财富。无论您是 Canary 渠道的抢先体验用户还是在 Beta 版 4 上进行测试的应用开发者,都可以考虑加入我们的社区并提交反馈。我们一直在倾听。
-
产品动态Android Studio Quail 2 现已稳定,可供您在生产环境中使用,它将通过并发代理工作流、原生集成的内存泄漏性能分析和情境感知型崩溃修复功能,为您的 IDE 带来转变。
-
产品动态早在 3 月,我们就推出了 Android Bench,这是我们针对实际 Android 开发任务的 LLM 排行榜。此后,我们根据您的反馈改进了基准,包括评估开放权重模型,以及在排行榜中添加费用和效率维度。
Zoe Lopez-Latorre • 3 分钟阅读时间 -
产品动态在 Google Play,我们致力于为用户打造卓越的体验,同时确保开发者拥有取得成功所需的工具和灵活的应变空间。
Paul Feng • 3 分钟阅读时间
每周通过电子邮件接收最新的 Android 开发洞见 每周。