2019-11-21 关于在Android studio 模拟器中运行程序报Android-Device supports x86,but APK only supports armeabi-...

最近最项目遇到的一个问题:

Android 的 so 库和 ABI 配置我原先也是没有什么概念的,直到上个周,在我尝试跑一个程序的时候,真机运行没问题,但是用Android studio模拟机的时候,遇到了这么一个错误:

Device supports x86,but APK only supports armeabi-v7a,armeabi,x86_64;

以上这个错误的大概意思就是:模拟机的设备是 x86,但是运行的这个程序的 apk 却只支持 armeabi-v7a,armeabi 和 x86_64 三种。

这个问题不仅仅是一个问题,它是很多个问题

是的,那么问题来了

x86,armeabi-v7a,armeabi,x86_64 到底是什么玩意?

我们的代码是在哪里设置apk对它们支持的?

怎么查看和设置模拟机的支持类型?

为什么我连接的真机大华为 HUAWEI PE-TL20 没有显示这样的错误?

宝宝发现了真相,快来夸我

为了弄明白上面的几个疑问,我 google 了很多相关方面的内容,终于召唤真相~~下面一个个来解释~

1.x86,armeabi-v7a,armeabi,x86_64 到底是什么玩意?

这四个玩意都是 CPU 架构类型的名称。

目前 android 支持的 CPU 架构有有以下几种:

CPU架构 描述

armeabi 第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢

armeabi-v7a 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能

arm64-v8a 第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit

x86 intel 32位,一般用于平板

x86_64 intel 64位,一般用于平板

mips 少接触

mips64 少接触

2.我们的代码是在哪里设置apk对它们支持的?

如果你和我用的开发工具都是 Android Studio 的话,那么在程序的主module 的 build.gradle中你会发现有这么个代码:

3.怎么查看和设置模拟机的支持类型?

这个问题非常简单,我们在创建一个模拟机的时候,就有 ABI 的选择,因为粗心,之前一直都没有发现,看下图:


图片

最后总结:在你的项目中配置一下,让我们的APP支持所有的CPU型号即可,或者创建模拟器的时候,选择你APP支持的CPU型号即可;

在项目中设置支持CPU型号的方法如下:

打开我们的项目——打开APP的build.gradle(Module:app)——找到如下图片中红框框出来的内容,将你的项目中的信息和红框里面的信息填写一致即可:


图片

至此,以上问题完美解决。

你可能感兴趣的:(2019-11-21 关于在Android studio 模拟器中运行程序报Android-Device supports x86,but APK only supports armeabi-...)