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 或更高版本为目标平台,那么现在,针对 DEX 和 JAR 文件在 Android 14 中引入的更安全的动态代码加载 (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 密钥库中的后量子加密 (PQC)
Android 密钥库 添加了对 NIST 标准化的 ML-DSA(基于模块格的数字签名算法)的支持。在受支持的设备上,您可以生成 ML-DSA 密钥,并使用它们在设备的安全硬件中生成量子安全签名。Android 密钥库通过标准 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 开发者,希望在应用中实现创新的 AI 功能,那么我们最近推出了强大的新更新。
Thomas Ezan • 阅读用时:3 分钟
-
产品动态
让 Google Play 为用户带来最安全、最值得信赖的使用体验。今天,我们将宣布推出一系列新的政策更新和帐号转移功能,以提升用户隐私保护并保护您的业务免受欺诈。
Bennet Manuel • 阅读用时:3 分钟
-
产品动态
现在,使用 Android 模拟器测试多设备互动比以往任何时候都更加轻松。
Steven Jenkins • 阅读用时:2 分钟
随时了解最新动态
每周通过电子邮件接收最新的 Android 开发洞见 每周。