device support x86 but apk only supports armeabi,Files successfully copied to: /sdcard/Download

最近最项目遇到的一个问题: 
Android 的 so 库和 ABI 配置我原先也是没有什么概念的,直到上个周,在我尝试跑一个程序的时候,真机运行没问题,但是用伟大的模拟机的时候,遇到了这么一个错误: 
这里写图片描述

模拟机的下面显示:

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中你会发现有这么个代码:

defaultConfig {
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86_64"
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

有些项目必须是arm构架,而不能用x86,所以只能运行支持arm构架的模拟器,而android studio自带的arm构架模拟器简直慢到不能用。所以用了Genymotion模拟器,该模拟器要支持arm构架也是要装插件的。

装插件的过程中碰到了几个坑:

1、Genymotion-ARM-Translation.zip,已经过时。

    

     我用的Genymotion版本。

原生的Genymotion模拟器只支持x86架构,很多使用了.so文件的应用不支持x86架构,因此无法运行。如果想要运行,必须安装ARM转换包。

本文提供ARM_Translation_MarshmallowGenymotion-ARM-Translation_v1.1ARM_Translation_Lollipop的三个版本。

链接:https://pan.baidu.com/s/1bp8mo27  密码:ipt0

使用方法:

在Genymotion里面建立Android 6.0的模拟器。
开机后把ARM_Translation_Marshmallow.zip拖到模拟器视窗中,让他自动安装。
完成后重开模拟器即可。
在Genymotion里面建立Android 5.0的模拟器。
开机后把ARM_Translation_Lollipop.zip拖到模拟器视窗中,让他自动安装。
完成后重开模拟器即可。

2、“Files successfully copied to: /sdcard/Download”,要是碰到这个问题,说明路径有问题。

原来此文件是不能放到含有中文路径的,因为我的用户名是中文,其实桌面的路径也是带中文的! 
而且路径和文件名不能有空格!
1 把它拷贝到纯英文的路径(直接拷贝到D盘根目录也行)

2 拖拽到模拟器主页屏幕上即可正常安装!


  


3 然后将模拟器关机,关闭模拟器后重启即可。


转载参考:

https://blog.csdn.net/qq_34476727/article/details/74910379

https://blog.csdn.net/zhangxichao100/article/details/78675203

https://blog.csdn.net/w605283073/article/details/70597368

https://blog.csdn.net/zy517863543/article/details/54629390


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值