让您的应用为 16 KB 页面大小的设备做好准备

让您的应用为 16 KB 页面大小的设备做好准备

作者 / 开发者关系工程师 Yacine Rezgui,资深软件工程师 Steven Moreland

Android 正在不断发展,以提供更快速、性能更佳的用户体验。其中一项关键改进是使用了 16 KB 的内存页面大小。这一变化使得操作系统能够更高效地管理内存,从而为应用和游戏带来显著的性能提升 (提升幅度为 5-10%)。我们在《为 Android 添加 16 KB 页面大小》一文中提供了深入的技术解析,并重点展示了性能改进。

为了帮助您在 16 KB 页面大小的设备上测试应用,此功能已作为开发者选项在 Google Pixel 8 和 9 设备上提供,三星设备也将很快提供类似的支持。此外,小米、vivo 及其他 Android 原始设备制造商 (OEM) 也将陆续提供。

为了确保与 16 KB 页面大小设备的兼容性,使用原生代码的应用 (无论是直接使用还是通过库或 SDK 使用) 可能需要重新构建。不过,这次过渡比之前 从 32 位到 64 位架构的转变 要容易得多。本文将指导您完成为即将推出的设备做好应用准备的必要步骤。新一代设备正在陆续推出,预计首批支持 16 KB 页面大小的机型将在未来几年内问世。

为 16 KB 做好准备:SDK 开发者

如果您开发自己的 SDK 和库,我们建议您尽快更新以兼容 16 KB 页面大小,并在使用 16 KB 页面大小的设备上进行测试。这将为应用开发者留出充足的时间来进行必要的更改。您可以注册 Google Play SDK 管理中心,确保将来能及时收到此类重要通知。

为 16 KB 做好准备:不使用原生代码的应用开发者

完全使用 Kotlin 或 Java 编程语言编写的应用,并且所有依赖项也均使用这些语言构建的应用,将无需进行任何更改即可正常运行。

为 16 KB 做好准备:使用原生代码的应用开发者

您可以使用 Android Studio 中的 APK Analyzer 等工具检查您的应用是否具有原生代码。然而,确保应用兼容性的唯一方法仍然是进行测试。

重新构建应用

为了确保您的应用能够在使用 16 KB 页面大小的设备上正常运行,请按照以下步骤操作:

  1. 升级工具:首先,请升级至 Android Gradle 插件 (AGP) 8.5.1 或更高版本。这些更新后的工具集成了必要的 16 KB 页面大小配置,适用于 App Bundle 和使用 Bundletool 生成的 APK。
  2. 统一原生代码:如果您的应用包含原生代码,请使用 NDK r28 或更高版本进行构建,或者使用 16 KB 页面大小对齐方式重新构建。此外,您还应确保原生代码中没有依赖或硬编码 PAGE_SIZE 的值。
  3. 更新 SDK 和库:确认您的应用中使用的所有 SDK 和库都兼容 16 KB 页面大小。如有必要,请联系 SDK 或库的开发者以获取更新版本。

在 16 KB 模式下测试应用

为了确保您的应用在任何地方都没有假定页面大小为 4 KB,请使用 16 KB 页面大小的模拟器或虚拟设备进行 测试,而不仅仅依赖于以往用 4 KB 页面大小进行的测试方法。这有助于识别并解决迁移到 16 KB 页面大小可能出现的任何兼容性问题。您还可以在支持相关 开发者选项 的实体设备上进行测试,例如从 Android 15 QPR1 开始提供支持的 Pixel 8、8a 和 8 Pro,以及从 Android 15 QPR2 Beta 2 开始支持的 Pixel 9、9 Pro 和 9 Pro XL。未来将提供更多设备支持。

迈向更快速、更高效的未来

支持 16 KB 页面大小为 Android 生态系统带来了诸多好处。它将释放性能的潜力,为未来的创新铺平道路,并为用户提供更流畅和丰富的应用体验。

版权声明

禁止一切形式的转载-禁止商用-禁止衍生 申请授权

脉脉不得语
脉脉不得语
Zhengzhou Website
Android Developer | https://androiddevtools.cn and https://androidweekly.io Funder | GDG Zhengzhou Funder & Ex Organizer | http://Toast.show(∞) Podcast Host

你已经成功订阅到 Android 开发技术周报
太棒了!接下来,完成检验以获得全部访问权限 Android 开发技术周报
欢迎回来!你已经成功登录了。
Unable to sign you in. Please try again.
成功!您的帐户已完全激活,您现在可以访问所有内容。
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.
🍗