2016 - 2024

感恩一路有你

abi操作流程 如何为安卓应用提供64位原生的支持?

浏览量:3253 时间:2023-07-18 16:26:12 作者:采采

如何为安卓应用提供64位原生的支持?

确保您的应用程序支持64位设备。

从2019年8月1日开始,您在Google Play上发布的应用必须支持64位架构。64位CPU可以为您的用户提供更快、更丰富的体验。增加一个64位的应用版本,不仅可以提高性能,为未来的创新创造条件,还可以为只支持64位架构的设备做准备。

本指南介绍了如何确保32位应用程序支持64位设备,以便您随时采用。

评估你的应用如果你的应用只使用Java编程语言或Kotlin(包括任何库或SDK)编写的代码,那就意味着应用已经支持64位设备。如果您的应用程序使用任何本机代码,或者您不确定您的应用程序是否使用此类代码,您需要评估您的应用程序并采取相应的措施。

您的应用程序使用本机代码吗?

首先,您需要检查您的应用程序是否使用了任何本机代码。如果您的应用程序满足以下条件,则您正在使用本机代码:

使用任何C/C(本机)代码。与任何第三方本地库相关联。它是由第三方应用程序构建者使用本地库构建的。您的应用程序包含64位库吗?

确定应用程序是否包含64位库的最简单方法是检查APK文件的结构。在编译时,APK将与应用程序所需的所有本地库打包在一起。根据ABI,本地库存储在不同的文件夹中。您的应用程序不需要支持所有64位体系结构,但是对于您支持的每个本机32位体系结构,应用程序必须包含相应的64位体系结构。

对于ARM架构,32位库位于armeabi-v7a中。相应的64位库位于arm64-v8a中。

对于x86架构,寻找x86(32位)和x86_64(64位)。

首先,确保两个文件夹中都有本地库。总结如下:

平台32位库文件夹64位库文件夹ARM x86请注意,每个文件夹中的一组库可能完全相同,也可能不完全相同,这取决于您的应用。你要达到的目标是保证你的应用能在只支持64位架构的环境下正常运行。

通常,为32位和64位架构编译的APK或软件包都会有这两个ABI的文件夹,每个文件夹都有一组对应的本机库。如果您的应用程序不支持64位架构,您可能会看到32位ABI文件夹,但不会看到64位文件夹。

使用APK分析器查找本地库

APK分析器是一个工具,可以用来评估编制的APK在各个方面。反对我们在我们讨论的例子中,我们将使用这个工具来查找本地库,以确定我们是否有一个64位库。

打开Android Studio,然后打开任意项目。从菜单中选择构建gt分析APK…

选择要评估的APK。检查lib文件夹,在那里你可以找到所有的 "。so "文件。如果你能 找不到任何 "。so "文件,就意味着应用程序已经准备了相应的库,而你没有 我们不需要采取进一步的措施。如果你看到armeabi-v7a或x86,你有一个32位的库。

检查是否有类似的 "。so "arm64-v8a或x86_64文件夹中的文件。

如果你不 如果没有任何arm64-v8a或x86_64库,您需要更新编译过程,以便在APK中开始编译和打包相应的工件。

如果您看到32位和64位库都打包在软件包中,您可以跳到在64位设备上测试应用程序。

在解压缩的APK中找到本地库

APK文件在结构上类似于zip文件,可以像zip文件一样解压缩。如果您更喜欢使用命令行或任何其他解压缩工具,您也可以使用提取APK的方法。

只需解压APK文件(取决于你使用的解压工具,你可能需要将其重命名为。zip),然后按照上面的指南浏览解压缩后的文件,以确定您的应用程序是否准备好支持64位设备。

例如,您可以从命令行运行以下命令:

注意本例中有armeabi-v7a库和arm64-v8a库,说明应用支持64位架构。

使用64位库编译应用程序

下面描述了64位库的编译。不过需要指出的是,下面的内容只是介绍如何编译代码以及可以在源代码基础上编译的库。

如果您使用任何外部SDK或库,请确保根据上述步骤使用64位版本。如果64位版本不可用,请联系相应SDK或库的所有者,并在规划支持64位设备的方案时考虑这一点。

用Android Studio或者Gradle编译。

Android Studio项目大多使用Gradle作为底层编译系统,所以本节适合用这两个工具进行编译。编译本机代码很简单,只需将arm64-v8a和/或x86_64(取决于您想要支持的架构)添加到 " "申请文件:

用CMake编译

如果你应该如果用CMake编译,可以通过将arm64-v8a传递给 "-丹德罗迪_ ABI "参数:

此方法在使用时无效。请参阅使用Gradle编译一节。

用ndk-build编译。

如果您的应用程序是使用ndk-build编译的,您可以修改 " "通过变量文件来编译64位ABI:

此方法在使用时无效。请参阅使用Gradle编译一节。

通过使用Android应用包来减少大小增加

向应用程序添加64位体系结构支持可能会增加APK的大小。我们强烈建议您使用Android应用功能,以最大限度地减少在同一个APK中同时包含32位和64位本机代码对APK大小的影响。

事实上,将应用程序更改为Android App Bundle不仅可以减少APK大小,甚至可以使其比现在更小。

游戏开发商

我们知道第三方游戏引擎的迁移是一个劳动密集型的过程,需要很长的准备时间。幸运的是,目前最常用的三个引擎都支持64位架构:

虚幻(2015年起)Cocos2d(2015年起)Unity(2018年起)Unity开发者升级到支持的版本。

Unity从2018.2和2017.4.16版本开始提供64位支持。

如果您发现您正在使用的Unity版本不支持64位架构,请决定升级到哪个版本,并按照Unity提供的指南迁移您的环境,以确保您的应用程序升级到可以编译64位库的版本。Unity建议您升级到编辑器的最新LTS版本,以获得最新的功能和更新。

下表概述了Unity的各种版本以及您应该采取的措施:

Unity版本支持64位架构吗?建议的措施2018.4 (LTS)

??

(待发布)确保你的编译设置可以输出64位库。2018.3

??

确保您的编译设置可以输出64位库。2018.2

??

确保您的编译设置可以输出64位库。2018.1

提供实验性的64位支持。2017.4 (LTS)

??

2017年4月16日起支持64位架构。确保您的编译设置可以输出64位库。2017.3

??

升级到支持64位体系结构的版本。2017.2

??

升级以支持64位架构的版本。2017.1

??

升级到支持64位体系结构的版本。5.6升

??

升级到支持64位体系结构的版本。确保编译设置可以输出64位库。

如果您使用的Unity版本支持64位Android库,您可以调整编译设置以生成64位版本的应用程序。您还需要使用IL2CPP后端作为脚本后端(详见这里)。要设置Unity项目以编译64位模式,请执行以下操作:

转到Build Settings,确保Android平台旁边显示了Unity的logo,以确保你是为Android编译的。* *如果Android平台旁边没有显示Unity徽标,请选择Android,然后单击切换平台。单击播放器设置。

转到播放器设置面板gt Android设置gt其他设置gt配置。

将脚本后端设置为IL2CPP。

选择* * "目标架构和gtarm64复选框。

照常编译!

请注意,在编译ARM64架构时,您需要专门为该平台编译您的所有资源。请跟随团结 的指南来减少APK的大小,并考虑使用Android应用程序功能来减少大小的增加。

在64位硬件上测试应用程序

64位版本的应用程序应该提供与32位版本相同的质量和功能集。请测试您的应用程序,以确保使用最新64位设备的用户可以在您的应用程序中获得良好的体验。

要开始测试您的应用程序,您需要一个支持64位架构的设备。如今,有许多流行的设备支持64位架构,如Googl

如何使用IPFS ENS托管您的Dapp并通过EthDNS访问它?

步骤1:修改您的应用程序。

我们的应用程序基于创建-响应-应用程序。除了大量使用GraphQL,我认为它是一个非常标准的。反应应用程序。我们没有。;不使用任何dapp框架(如:将构建文件发布到IPFS。

我没有。;不要详细说明如何设置和运行IPFS守护进程(但这应该只是IPFS守护进程的问题)。

完成所有设置后,将刚刚编译的构建目录添加到IPFS中。

步骤3::将contenthash设置为ENS

如果你不 现在还没有ENS的名字,这是一个注册的好机会。只需在ENS管理器中注册一个新名称,设置一个公共解析器,并通过选择 "内容 "记录类型。

第四步。通过EthDNS访问它。

如果通过ENS contenthash支持的浏览器/钱包打开(比如Status)。您应该可以在下看到相同的内容。然而,你可以 不要指望你所有的朋友和家人都能在ENS支持的浏览器中看到你的内容,这是EthDNS的作用。

应用程序 架构 APK 设备

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。