📜  在 Android 中过渡到 x64 架构

📅  最后修改于: 2022-05-13 01:57:09.874000             🧑  作者: Mango

在 Android 中过渡到 x64 架构

如果您的应用程序仅使用用Java或 Kotlin 编写的代码,包括任何库或 SDK,则它已经为 64 位设备做好了准备。如果您的应用程序使用本机代码,或者您不清楚是否使用本机代码,您必须对其进行评估并采取措施。

但为什么我们实际上要转型?

Google 计划在未来几年过渡到 64 位应用生态系统,以便在由 64 位 CPU 驱动的设备上提供卓越的软件体验。该公司最近提供了有关此更改的更多信息,称从今年 8 月开始,开发人员将被要求提交其 Android 应用程序的 64 位版本。这一步骤最终将导致 64 位应用程序政策在全球范围内应用,该政策将于 2021 年实施,之后谷歌将不再在通过具有 64 位硬件的设备访问时在 Play 商店中托管 32 位应用程序。

但是我们怎么知道我们有没有。以及扩展文件:

您必须在 Android Studio 的 APK Analyzer 中检查您应用的 APK。要启动 APK 分析器:

  1. 从菜单中选择 Build > Analyze APK,然后选择要评估的 APK。
  2. 现在,如果您将分析器签入 lib 文件夹并注意到任何内容。
  3. 因此,如果您有任何 armeabi-v7a 或 x86,则您有 32 位库;如果您有任何 armeabi-v7a 或 x86,则您有 32 位库。
  4. 如果您没有注意到任何 .so 文件,则您的程序不需要升级。

32位代码到64位代码的转换

如果您的代码已经在桌面或 iOS 上运行,那么您不必为 Android 做任何特别的事情。如果这是您第一次为 64 位系统编写代码,那么您必须处理的主要困难是引用不再适合 int 等 32 位整数类型。您将需要更改将指针保存为 int、unsigned 或 uint32 t 类型的代码。 Long 与 Unix 平台上的指针大小匹配,但在 Windows 上不匹配,因此请改用意图显示类型 uintptr t 或 intptrt。要保存两个指针之间的差异,请使用 ptrdiff t 类型。

通过解压缩 APK,您可能会寻找原生库:

APK 文件的组织方式与 zip 文件类似,并且可能以类似方式提取。如果您想使用命令行或其他提取工具,解压缩 APK 将起作用。只需解压缩 APK 文件(取决于您的提取程序,您可能需要将其重命名为 .zip)并浏览提取的内容,按照上述说明确定您是否已准备好使用 64 位设备。

我的应用程序有一些例外吗?

Google Play 将继续为使用 Unity 5.6 开发环境或更早版本创建的游戏提供 32 位升级。但是,这只会持续到 2021 年 8 月 1 日。此外,为不支持 64 位代码的 Wear OS 和 Android TV 平台创建的 APK 和软件包将被排除在禁令之外。最后,任何不适用于运行 Android Pie 或更高版本的设备的谷歌移动操作系统的应用程序和软件包都将不受仅限 64 位的限制。

使用 64 位库创建程序

以下步骤将指导您完成创建 64 位库的过程。但是,您应该知道,这仅适用于构建可以从源代码构建的代码和库。

执行此操作将您当前的应用程序转换为 x64:

:: Command Line of your choice
> cmake -DANDROID_ABI=arm64-v8a … or
> cmake -DANDROID_ABI=x86_64 …

仅 64 位的设备将于 2023 年上市

Arm 向开发者社区传达的信息是尽快开始转向纯 64 位编程。优点远远超过缺点。 64 位处理器可以同时处理更多数据,让新兴的移动技术蓬勃发展。与 32 位 CPU 相比,64 位 CPU 可以在更短的时间内收集、传输和处理更大的数据块,从而实现更高的性能 — 特定工作负载的性能提升高达 20%。这意味着 64 位设备通常更快且响应更快(尽管这也取决于编写良好的代码)。

结论

过渡到 64 位 Android 对每个人来说都是双赢的局面。它将为整个 Android 生态系统带来各种性能、效率和安全优势,而不会造成重大破坏,同时也让开发人员为未来的移动创新做好准备。因此,我们高度支持过渡,并坚信世界各地的开发人员都能够将他们的程序迁移到 64 位。