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

时间:2023-03-21
本文介绍了armeabi-v7a、arm64-v8a、x86 有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在 Kivy 上开发一个 Android 应用程序.我正在使用 Buildozer 编译一个 APK 文件.Buildozer spec文件里有一个设置android.arch = armeabi-v7a,这个我没看懂.

I am working on an Android App on Kivy. I am using Buildozer to compile an APK file. In the Buildozer spec file, there's a setting android.arch = armeabi-v7a, I didn't understand this.

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

Also, when I generated the APK file using the command buildozer -v android debug and installed it using the command adb install bin/<appname>.apk - it didn't Open on my Android Phone.

推荐答案

这些是 CPU 指令集.大多数情况下你不必担心它,默认值很好,但由于最近的一些变化,我一直想在文档中添加一些关于它的内容.

These are CPU instruction sets. Mostly you don't have to worry about it, the default is fine, but I've been meaning to add something to the docs about it due to some recent changes.

基本上,给定的 Android 设备可能有一个 arm 或一个 x86 cpu(或者甚至是其他东西,但这并不重要),这些只是来自不同制造商的不同架构类型.Arm cpus 是最常见的,但 x86 并不罕见.编译代码时,输出取决于架构目标.当您构建 Kivy 应用程序时,您指定其中一种架构,然后该应用程序将仅在该类型的设备上运行.如果您想支持所有设备,您可以编译多个 APK 来分发 - Play 商店可以让您上传多个,并且会为每个设备发送正确的一个.

Basically, a given Android device might have an arm or an x86 cpu (or even something else but that's not important), these are just different architecture types from different manufacturers. Arm cpus are most common, but x86 is not unusual. When you compile code, the output depends on the architecture target. When you build a Kivy app, you specify one of the architectures and then the app will only work on that type of the device. If you want to support all devices, you can compile multiple APKs to distribute - the Play store will let you upload more than one, and will send each device the right one.

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

Within a given architecture type there are multiple versions. armeabi-v7a is the older target, for 32 bit arm cpus, almost all arm devices support this target. arm64-v8a is the more recent 64 bit target (similar to the 32-bit -> 64 bit transition in desktop computers). I think most new devices are 64 bit, but not sure. arm64-v8a devices can run code compiled against armeabi-v7a, it's backwards compatible.

从今年晚些时候开始,Play 商店将要求您至少上传 arm64-v8a APK,因为这样可以为较新的设备提供最佳支持.您还可以上传其他 APK 以支持其他设备类型.

As of later this year, the Play store will require you to upload an arm64-v8a APK as the minimum, because this gives the best support for newer devices. You will also be able to upload other APKs to support other device types.

这还不是全部:一些 x86 设备有一个特殊的库,可以让它们运行为 arm 设备编译的代码.我不确定这有多普遍,但似乎很普遍.

That isn't quite the full story: some x86 devices have a special library that lets them run code compiled for arm devices. I'm not sure how widespread this is, but it seems pretty common.

对于您的应用问题,请使用 adb logcat 查看问题所在.

For your app issue, use adb logcat to see what's wrong.

这篇关于armeabi-v7a、arm64-v8a、x86 有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

上一篇:Kivy 应用程序无法在 Android 上运行 下一篇:Kivy Opencv Android

相关文章