产品新闻

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 为目标平台的应用有影响的行为变更,以便确定测试重点,包括以下内容:

  • 大屏上的尺寸调整:一旦您将目标 API 级别设为 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 结合使用,以获取在达到内存限制时收集的堆转储。

无名称 (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 Keystore 添加了对 NIST 标准化的 ML-DSA(基于模块网格的数字签名算法)的支持。在支持的设备上,您可以生成 ML-DSA 密钥,并使用这些密钥在设备的安全硬件中完全生成量子安全签名。Android Keystore 通过标准 Java Cryptographic Architecture 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 中使用 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 上的应用开发者,都可以考虑加入我们的社区并提交反馈。我们听到了您的心声。

编剧:
继续阅读