产品资讯

Android 17 的第四个 Beta 版

阅读用时:4 分钟
查看 Daniel Galpin 的个人资料
Daniel Galpin 开发技术推广工程师

Android 17 已进入 Beta 4 阶段,这是此发布周期中最后一个计划内的 Beta 版,也是应用兼容性和平台稳定性的关键里程碑。无论您是要微调应用的用户体验、确保流畅的全屏渲染,还是利用最新的 API,Beta 4 都能提供您需要测试的近乎最终的环境。

让您的应用、库、工具和游戏引擎做好准备!

如果您开发 Android SDK、库、工具或游戏引擎,现在就必须准备好任何必要的更新,以防止下游应用和游戏开发者因兼容性问题而受阻,并使他们能够以最新的 SDK 功能为目标。如果需要更新才能完全支持 Android 17,请告知您的下游开发者。

Android17_Timeline_01_V02.png

测试涉及使用 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 以来做出了一些更改,包括强制执行 targetSDK 限制(仅限使用期间的前台服务)以及豁免闹钟音频。如需了解完整详情,请参阅更新后的指南。

应用内存限制

Android 将根据设备的 RAM 总容量引入应用内存限制,以便为您的应用和 Android 用户打造更稳定、更确定的环境。在 Android 17 中,我们设置了保守的限制,以建立系统基准,在极端内存泄漏和其他异常情况触发系统级不稳定(导致界面卡顿、耗电量增加和应用被终止)之前,将其拦截。虽然我们预计这对绝大多数应用会话的影响微乎其微,但我们建议您遵循以下内存最佳实践,包括建立内存基准。

在当前实现中,如果您的应用受到影响,ApplicationExitInfo 中的 getDescription 将包含字符串“MemoryLimiter”。您还可以将基于触发器的性能分析与 TRIGGER_TYPE_ANOMALY 搭配使用,以获取在达到内存限制时收集的堆转储。

unnamed (2).png
Android Studio 性能分析器中的 LeakCanary 任务

为了帮助您查找内存泄漏,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 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 版更新。如果您没有 Pixel 设备,可以在 Android Studio 中将 64 位系统映像与 Android 模拟器搭配使用。

如果您目前已加入 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 上测试的应用开发者,都欢迎加入我们的社区并提交反馈。我们正在倾听。

作者:
继续阅读