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
    +关注

    关注

    134

    文章

    8615

    浏览量

    361305
  • 代码
    +关注

    关注

    30

    文章

    4536

    浏览量

    66487
  • apk
    apk
    +关注

    关注

    0

    文章

    22

    浏览量

    4731

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

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

收藏 人收藏

    评论

    相关推荐

    入门级64ARM®CORTEX®-A55 MPU数据手册

    电子发烧友网站提供《入门级64ARM®CORTEX®-A55 MPU数据手册.pdf》资料免费下载
    发表于 02-19 10:59 0次下载
    入门级<b class='flag-5'>64</b>位<b class='flag-5'>ARM</b>®CORTEX®-A55 MPU数据手册

    ARM64位与ARM32位OP-TEE启动过程的差异

    ARM32的OP-TEE与ARM64的OP-TEE启动过程大致相同。ARM64的OP-TEE的_start函数定义在generic_entry_a64.S文件中,而且该函数不像
    的头像 发表于 11-07 15:12 244次阅读

    8机、32机、64机是以什么标准来确定的?

    我们说的8机、32机、64机是以什么标准来确定的? 为什么同一台电脑,即能装32操作系统,又能装
    发表于 11-02 07:14

    Ampere推出全新软件迁移工具Ampere Porting Advisor

    当前,开发者对高效的软件迁移解决方案的需求与日俱增。随着计算从传统 x86 架构向 AArch64 架构迁移,尤其是向 Ampere 处理器迁移的势头日益强劲,开发者们正在寻找加速代码
    的头像 发表于 08-24 10:14 1156次阅读

    Keil支持64版的Win10吗?

    Keil 支持64版的 Win10 吗? nuvoton的M0、M4的工具支持64版的 Win10吗? 现在是转向64
    发表于 08-24 07:23

    从电源架构迁移ARM的应用说明

    本文档的目的是强调那些参与将软件应用程序从Power架构迁移ARM平台的人员感兴趣的领域。 本文并不试图将一种体系结构提升到另一种体系结构之上,只是为了清楚地解释将现有软件应用程序从一种体系结构
    发表于 08-22 06:09

    Arm编译器迁移和兼容性指南

    Arm®编译器迁移和兼容性指南为从旧版本的Arm编译器迁移Arm编译器6的用户提供迁移和兼容性
    发表于 08-10 06:57

    海凌科新款arm64开发板wukongPi 4B简述

    海凌科新款arm64开发板——wukongPi 4B上架,兼容树莓派,采用RK3399 SoC。
    的头像 发表于 08-07 14:53 558次阅读
    海凌科新款<b class='flag-5'>arm64</b>开发板wukongPi 4B简述

    64Arm入门指南

    使用本指南了解有关64Arm(AArch64)入门的更多信息,包括: •从何处获得Arm技术(硬件和移植软件) •如何将自己的应用程序移植
    发表于 08-02 17:40

    如何将项目从Arm Compiler 5迁移Arm Compiler 6

    按照本教程中的步骤,将现有的Arm Compiler 5裸机项目迁移Arm Compiler 6裸机项目。完成迁移后,就可以重新构建您的可执行并在DS-5提供的固定虚拟平台(FVP)
    发表于 08-02 14:42

    IDA64是什么?IDA64有哪些亮点?

    我们进一步改进了IDA64,因此它可以在所有情况下完全替代传统的32位IDA。为了简化迁移,我们实现了一个功能,将遗留.idb数据库转换为.i64数据库(代号为CVT64)。
    的头像 发表于 08-02 10:07 1125次阅读
    IDA<b class='flag-5'>64</b>是什么?IDA<b class='flag-5'>64</b>有哪些亮点?

    如何使用Neon intrinsic的矢量处理代码迁移到氦intrinsic

    ,这些原则可用于将您自己的Neon代码迁移到氦。迁移是必要的,因为尽管氖和氦之间有相似之处,但它们基于不同的架构。因此,软件不能在两者之间直接移植。 氖和氦的相似之处包括: •矢量寄存器为128
    发表于 08-02 07:39

    Arm A64指令集体系结构

    的方式执行它。 本指南介绍了在64Armv8-A体系结构中使用的A64指令集AArch64。 我们不会在本指南中涵盖每一个指令。所有的说明都在臂中详细说明架构参考手册。相反,我们将介
    发表于 08-02 06:33

    openEuler实例:K3s ARM64集群管理

    AWS可以很方便创建ARM64环境,使用openEuler AMI创建EC2实例,c6g.xlarge 规格完全可以满足Rancher的部署需求。
    发表于 04-18 10:44 397次阅读

    如何将prj从S32DS for ARM version2018.R1迁移到S32平台3.4?

    我想将 prj 从 S32DS for ARM version2018.R1 迁移到 S32 平台 3.4我这样做:单击File > Import... >
    发表于 04-11 08:14