0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arm 64位迁移

安芯教育科技 来源:安芯教育科技 作者:Nathan 2020-11-13 16:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

2020 年 10 月,Arm 宣布,从 2022 IP 开始,未来的所有 Cortex-A”大核”都将仅支持 64 位代码。Oppo 和小米这两家中国领先的移动终端制造商以及领先的游戏引擎 Unity(中国)纷纷对 Arm 宣布向 64 位迁移和为之付出的努力表示支持。

Arm 认为,迁移到 64 位是中国的开发人员都应迈出的积极一步。如果想要打造能满足消费者需求的全新、更复杂、安全可靠、身临其境的体验,他们的app必然需要迁移到 64 位。另外,预计到 2023 年将出现仅支持 64 位的移动设备,届时他们的app还需要与这些设备相兼容。

64 位不仅能带来许多好处(如上一篇极术社区的博客中所述),例如优化性能、提高安全性、改善功效和降低成本,而且将app迁移到 64 位的过程十分简单,并不具备太多挑战。当然,下文也列出了在迁移到 64 位的过程中,中国开发人员需要考虑的一些方面以及对应采取的措施。请注意,下列步骤都是建立在开发人员使用 Google Android Studio 进行app开发的假设基础上。

查看app代码

全部由 Java 编程语言或 Kotlin 编写而成的Android 应用程序(包括所有库或 SDK)都将自动能在 64 位移动设备上运行。对于那些向专属/第三方本地库发出 Java 本地接口 (JNI) 调用(以进行用户行为分析、加密、云服务等)的 Java 应用程序,这些库也需要迁移到 64 位,才能消除所有 32 位依赖项。而且,使用 Arm NEON 指令编写的大多数代码无需更改即可编译成 64 位。但是,如果app使用的是本地库,则其必须是 64 位版本,这可能需要额外的开发工作。

查验本机代码

如果开发人员不确定他们的app是否使用本机代码,可以检查以下三项:


• app是否使用了任何 C/C++(本机)代码
• app是否与任何第三方本地库相关联
• app是否由某个使用本地库的第三方app生成器构建而成。

使用 APK 查验本地库

根据应用二进制接口 (ABI),本地库存储在不同文件夹内。通常情况下,为 32 位和 64 位架构构建的 APK 或数据包将拥有分别针对两种 ABI 的文件夹,每个文件夹内包含一组对应的本地库。如果不支持 64 位,开发人员可能只会看到 32 位 ABI 文件夹,却没有 64 位文件夹。

使用工具查验本地库

开发人员还可以使用不同的工具来查验app中的本地库。APK Analyzer 是 Android Studio 中一款可用的 Android 工具,可帮助开发人员评估某个已构建的 APK 的不同方面。开发人员还可以通过解压缩 APK 来查验本地库,因为这些文件的结构都类似于压缩文件,所以也可以采取类似的提取方式。

从 32 位移植到 64 位

如果应用代码已经在 iOS 上顺利运行,则无需再做任何额外工作。但是,如果这是应用代码初次构建用于 64 位系统,则需要解决的主要问题是指针不再适合于 int 之类的 32 位整型。因此,开发人员需要对以 int、unsigned 或 uint32_t 类型存储指针的代码进行更新。

减轻 64 位带来的规模增加

为应用程式添加 64 位架构的支持可能导致 APK 大小随之增加。Android App Bundle 功能可以最大限度地降低同一 APK 中同时包含 32 位和 64 位代码所带来的规模影响。在大多数情况下,将应用切换为使用 Android App Bundles 实际上有助于改善 APK 的大小,甚至小于 32 位时的应用大小。

游戏开发人员

正如我们在上一篇极术社区的博客中提到的,三个最常用的游戏引擎 Unreal、Cocos2d-x 和 Unity 目前都支持 64 位。事实上,这些领先的游戏引擎都支持 64 位对于游戏开发人员而言是一大利好消息,因为要为第三方游戏引擎迁移应用是一个前置时间非常长的繁杂过程。

测试应用

64 位版本的应用准备就绪后,应能提供与 32 位版本相同的质量和功能集。但是,这只有通过app测试才能保证。测试需要在支持 64 位的设备上完成。幸运的是,如今中国国内市场上的绝大多数智能手机都已兼容 64 位。

发布app

app准备就绪后,开发人员就可以照常发布。与现有的流程一样,我们建议还是继续遵循app部署的最佳实践。Android 建议利用闭环测试轨道,先向有限数量的用户推行,以确保app质量一致。

提供更多信息和支持

根据上述信息,中国开发人员向 64 位迁移的过程应该相对较轻松,干扰因素也最少。只需花费少量成本或时间完成迁移后,中国开发人员将能享受到多种多样的巨大好处。有关更多详细信息,我们建议遵循 Android 开发最佳实践或阅读Arm 64 位白皮书。

Arm 正在与合作伙伴展开密切合作,了解哪些生态系统、技术或商业方面的问题会妨碍app向 64 位迁移。我们向中国开发人员提出的建议非常简单——立即着手,开始迁移到 64 位。现在就开始构建 64 位版本的应用,在主要开发、优化和测试平台中改用 64 位,对本机和 Java 应用程序进行仔细检查,尽快升级所有 32 位库或引擎。

责任编辑:xj

原文标题:Arm 64位迁移知识汇总

文章出处:【微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9588

    浏览量

    393687
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74386
  • apk
    apk
    +关注

    关注

    0

    文章

    25

    浏览量

    5484

原文标题:Arm 64位迁移知识汇总

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux Kernel 6.1 tools目录全解析 | RK平台ARM64交叉编译实战指南

      在瑞芯微( RK ) ARM64 平台嵌入式 Linux 开发、内核调试与硬件外设测试中, Linux 内核源码自带的 tools 目录 是官方标配的工具集合,涵盖性能分析、设备调试、系统管理
    的头像 发表于 04-16 18:42 7077次阅读
    Linux Kernel 6.1 tools目录全解析 | RK平台<b class='flag-5'>ARM64</b>交叉编译实战指南

    PIC24FJ64GA004 系列 16 闪存微控制器:高性能与多功能的完美结合

    PIC24FJ64GA004 系列 16 闪存微控制器:高性能与多功能的完美结合 在电子设计领域,选择合适的微控制器对于项目的成功至关重要。PIC24FJ64GA004 系列 16
    的头像 发表于 04-08 18:10 1045次阅读

    RZ/A3UL Group 32 & 64 MPUs 深度解析:功能特性与设计要点

    RZ/A3UL Group 32 64 MPUs 深度解析:功能特性与设计要点 在电子设计领域,一款性能卓越的微处理器(MPU)对于产品的成功至关重要。今天,我们就来深入探讨一下 RZ/A3UL
    的头像 发表于 04-01 11:45 242次阅读

    RZ/T2ME Group:高端32 & 64MPU的技术剖析

    RZ/T2ME Group:高端32 64MPU的技术剖析 在电子工程领域,处理器的性能和功能直接影响着产品的竞争力。RZ/T2ME Group作为一款基于Arm的高端32 64
    的头像 发表于 04-01 11:30 181次阅读

    PY32F003至为芯支持32ARM内核的低成本MCU微控制器

    普冉PY32F003是一款用于智能穿戴、遥控器、电子玩具、智能灯具等便携式设备的MCU微控制器。基于32ARM Cortex-M0+内核,最高主频32MHz。内置64KB的Flash存储器和8KB的SRAM存储器。
    的头像 发表于 03-20 15:01 303次阅读
    PY32F003至为芯支持32<b class='flag-5'>位</b><b class='flag-5'>ARM</b>内核的低成本MCU微控制器

    LuatOS选型指南:基于Air780EPM的32/64性能实测分析

    面对3264LuatOS固件的选择难题,本文通过在Air780EPM开发板上的实际测试,详细解析两者在整数处理能力、浮点数精度以及系统性能方面的差异,结合应用场景给出专业建议,助力开发者实现
    的头像 发表于 02-25 18:05 302次阅读
    LuatOS选型指南:基于Air780EPM的32/<b class='flag-5'>64</b><b class='flag-5'>位</b>性能实测分析

    32还是64?答案藏在你的项目里

    LuatOS系统具备强大的跨芯片平台支持能力,并为开发者同时提供 3264双版本固件 。 本文将基于LuatOS在Air780EPM开发板上的测试结果,详细分析32
    的头像 发表于 02-23 21:36 509次阅读
    32<b class='flag-5'>位</b>还是<b class='flag-5'>64</b><b class='flag-5'>位</b>?答案藏在你的项目里

    深入剖析ARM64内核关键文件:kernel-6.1/arch/arm64/kernel/head.S

    ARM64 架构的 Linux 内核开发中,arch/arm64/kernel/head.S是一个绕不开的关键文件—— 它是内核启动早期的 “桥梁”,承接 Bootloader 与内核初始化核心
    的头像 发表于 02-04 17:35 1389次阅读
    深入剖析<b class='flag-5'>ARM64</b>内核关键文件:kernel-6.1/arch/<b class='flag-5'>arm64</b>/kernel/head.S

    深入剖析ARM64异常处理:开发者必须掌握的底层核心逻辑

    ARM64架构的开发领域,异常处理绝非单纯的理论知识点,而是直接决定系统稳定性、调试效率和功能实现的关键技术。无论是嵌入式开发、Linux内核移植,还是驱动开发与芯片调试,理解异常发生后CPU
    的头像 发表于 12-24 07:05 1356次阅读
    深入剖析<b class='flag-5'>ARM64</b>异常处理:开发者必须掌握的底层核心逻辑

    如何在Keil中将NuMicro BSP从Arm编译器5迁移到编译器6?

    在Keil中将NuMicro BSP从Arm编译器5迁移到编译器6!
    发表于 08-20 06:29

    请问各位dayu200是不是不支持烧录64的OpenHarmony

    我自己编译了OpenHarmony5.0.2的镜像,发现如果使用arm64参数编译为64版本,烧录后卡在开机动画无法开机,如果编译为32就可以正常。请问dayu200不支持
    发表于 08-16 17:39

    Texas Instruments 适用于AM64x Sitalog ™处理器的SK-AM64B入门套件数据手册

    Texas Instruments适用于AM64x Sitara™处理器的SK-AM64B入门套件是一个独立的测试和开发平台,是加速设计原型阶段的理想选择。AM64x处理器由一个双核64
    的头像 发表于 07-28 10:20 970次阅读
    Texas Instruments 适用于AM<b class='flag-5'>64</b>x Sitalog ™处理器的SK-AM<b class='flag-5'>64</b>B入门套件数据手册

    如何下载 SDK 来构建 64 版本的库?

    我正在尝试获取 64 版本的 CySuiteUSB dll 文件,但是当我转到SuiteUSB 3.4 页面时,没有任何链接可以下载 SDK。如何下载 SDK 来构建 64 版本的
    发表于 07-23 08:25

    基于瑞萨64MPU RZ/G2L进行32应用软件开发

    本文主要介绍基于瑞萨64MPU RZ/G2L进行32应用软件开发的介绍,用于解决客户32软件移植相关问题,供客户参考。
    的头像 发表于 06-26 15:48 2197次阅读
    基于瑞萨<b class='flag-5'>64</b><b class='flag-5'>位</b>MPU RZ/G2L进行32<b class='flag-5'>位</b>应用软件开发

    Windows Arm64托管运行器正式支持GitHub Actions

    的面向 GitHub Copilot 的 Arm 扩展程序,更是进一步简化并加速了向 Arm 架构服务器的迁移过程。双方的共同努力正在赋能开发者,使其能够在 Arm 平台上进行更快、更
    的头像 发表于 04-28 14:23 1299次阅读