armeabi-v7a、arm64-v8a、x86之间有什么区别?

2024-06-01 08:26:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Kivy上开发一个Android应用程序。我正在使用Buildozer编译一个APK文件。 在Buildozer规范文件中,有一个设置android.arch = armeabi-v7a,我不明白这一点。

另外,当我使用命令buildozer -v android debug生成APK文件并使用命令adb install bin/<appname>.apk安装它时,它并没有在我的Android手机上打开。

帮帮我伙计们!


Tags: 文件debug命令规范应用程序apkandroidadb
1条回答
网友
1楼 · 发布于 2024-06-01 08:26:16

这些是CPU指令集。大多数情况下,您不必担心它,默认设置是好的,但是由于最近的一些更改,我一直想在文档中添加一些关于它的内容。

基本上,一个给定的Android设备可能有一个arm或x86 cpu(或者其他一些不重要的东西),这些只是来自不同制造商的不同架构类型。Arm CPU是最常见的,但x86并不罕见。编译代码时,输出取决于体系结构目标。当你构建一个Kivy应用时,你需要指定其中一个架构,然后这个应用将只在这种类型的设备上工作。如果你想支持所有设备,你可以编译多个apk来分发-Play store将允许你上传多个apk,并将每个设备发送正确的apk。

在给定的体系结构类型中有多个版本。armeabi-v7a是较老的目标,对于32位arm cpu,几乎所有arm设备都支持这个目标。 arm64-v8a是最新的64位目标(类似于桌面计算机中的32位->;64位转换)。我认为大多数新设备都是64位的,但不确定。arm64-v8a设备可以运行针对armeabi-v7a编译的代码,这是向后兼容的。

从今年晚些时候起,Play store将要求您至少上传一个arm64-v8a APK,因为这为更新的设备提供了最好的支持。您还可以上传其他apk以支持其他设备类型。

这还不是全部:一些x86设备有一个特殊的库,允许它们运行为arm设备编译的代码。我不知道这有多普遍,但似乎很普遍。

对于您的应用程序问题,请使用adb logcat查看出了什么问题。

相关问题 更多 >