android – 错误的原因是什么:“设备支持x86,但APK仅支持armeabi-v7a”

问题:

我正在通过从GitHub测试一些项目来使用Android Studio,当我尝试模拟apk时,它不允许我选择模拟器。

它告诉我:

设备支持x86,但APK仅支持armeabi-v7a

为什么这样做呢?

I am playing around with Android Studio by testing some projects out from GitHub and when I try to emulate the apk, it does not let me choose an emulator.It tells me:Device supports x86, but APK only supports armeabi-v7aWhy does it do this?

解决方案:

方案1:

关闭USB调试,然后将其重新打开在硬件设备上。

方案2:

我有同样的问题,我从module:app签出build.gradle 事实证明,有一个这样的配置:

    ndk {
        abiFilters "armeabi-v7a", "x86"
    }

当我全部注释掉时,一切正常。

我正在尝试处理React Native Android项目

方案3:

在Android Studio中,选择“ 构建”菜单,

在此处输入图片说明

然后单击“ 选择构建版本…”,然后在“构建版本”窗口中选择x86Debug (或发行版)

在此处输入图片说明

PS:我在Mac上使用Android Studio 2.3

方案4:

在Linux上:“文件”>“使缓存无效/重新启动”在电话上:改为将此设备更改为“充电照片(PTP)”

方案5:

以我的Linux机器adb devices显示

List of devices attached 
44b194f5    no permissions

然后重启adb服务器

sudo adb kill-server

然后

sudo adb start-server

然后连接设备,打开“调试”并输入

adb devices
List of devices attached 
44b194f5    device

终于能够在设备上运行

方案6:

我遇到了类似的问题,并且通过将“ x86”值添加到“ abiFilters”列表中来解决此问题,如下所示-

[打开build.gradle(Module:app)文件],并在deafultSection中搜索“ ndk ”并添加“ x86”!

ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

希望能帮助到你!!!

方案7:

您需要重新连接设备,然后尝试关闭/打开开发人员选项。

请参阅启用开发人员选项和调试

方案8:

设备支持x86,但APK仅支持armeabi-v7a)

听起来好像您在模拟器中使用了x86图像。

创建一个单独的。 如果需要,请选择“其他图像”选项卡以查找手臂设备。

或者,在实际设备上运行。 我认为,您列出的存储库旨在在Raspberry Pi 3 / ODroid上运行。

方案9:

就我而言,我的应用使用了一些本地库。 每个平台都需要构建相应的库。

因此不会生成x86(或任何其他)平台的本机lib。您必须在以下位置添加abifilter:

在几个地方可以指定abi过滤器:

  • Application.mk像这样添加您需要的平台:

     APP_ABI := armeabi armeabi-v7a x86 
  • build.gradle

    找到abiFilters,然后添加所需的平台,如下所示:

     abiFilters "armeabi","armeabi-v7a","x86" 

方案10:

可以确认,在开发人员选项中启用/禁用USB调试可以解决此问题。 甚至可以取消Android Studio中的“选择部署目标”窗口,并在切换USB调试后尝试再次运行该应用程序。

方案11:

只需转到设备Settings >> Developer Options >> Restore Default Settings然后启用USB debugging

方案12:

对我来说,更改电缆选项从

-> Charge Only. 

-> Transfer file.

方案13:

在我的物理设备上,我开始得到这个。 解决方法是进入“开发人员设置”,然后关闭然后再打开USB调试。

方案14:

如果您使用Ubuntu:

  1. 确保已打开USB调试
  2. 检查电缆连接
  3. 在通知栏上检查android系统通知,然后触摸它以将充电状态更改为文件传输
  4. 现在进入终端并键入:运行此命令后,adb设备adb重新启动,您的设备显示在列表中

方案15:

亚行杀害服务器

亚行启动服务器

它在Windows OS上为我工作。

方案16:

在真实电话上测试您的代码。 如果仍然有问题,请再次导入代码,在此之前,您应该更新SDK并使用ARM系统映像创建新的模拟器。

方案17:

很多时候,这意味着您尚未授予笔记本电脑/计算机对设备的访问权限。 查看您的设备,然后单击“允许访问”按钮以及调试权限。

方案18:

使用x86处理器运行AVD的速度比使用ARM仿真器快10倍,但是大多数情况下,您只为ARM编译APK。 为了使用x86 AVD进行更快的仿真运行,我必须执行以下操作(对于Cocos2d-x项目):

  • app / jni / Android.mk

     APP_ABI := armeabi-v7a:x86 
  • gradle.properties

     PROP_APP_ABI=armeabi-v7a:x86 
  • app / build.gradle

     android { ... defaultConfig { ... ndk { abiFilters = [] abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String}) } } } 

方案19:

重新启动设备为我解决了问题(本机)

方案20:

更新Android Studio之后发生在我身上。 在我的情况下,由于构建设置未自动配置到x86Debug-x86中而发生。 只需打开Build >> Select Build Variant >>,即可将其更改,将armeabi-v7a的构建版本选项更改为x86Debug-x86或仿真器中所需的任何内容。

方案21:

尝试从“安全性选项”启用未知来源 它为我工作。

参考连接:

https://stackoverflow.com/questions/41775988/41775988