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


90

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

它告诉我:

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

为什么这样做呢?


您使用了什么AVD?什么系统映像?什么GitHub项目?
OneCricketeer

换句话说,Intel x86映像不会运行ARM代码。
OneCricketeer


我想使用运行Android 5.1的Nexus 10
Alexander Ibarra

好的,您使用的是ARM eabi v7系统映像还是Intel Atom x86映像?检查您的SDK管理员已安装了什么。
OneCricketeer

Answers:


85

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

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

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

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


1
我认为您的意思是build.gradle;)
Ryan James

2
我遇到了同样的问题,对我来说,“ x86”在那里不见了
托马斯

1
这对我有用-但是我要做的就是允许在我的实际设备上进行调试,我可以再次取消注释此行。
Boomer Rogers

我应该把ndk放在哪一部分?
Ömrüm切廷

在Java / kotlin中不适用于我,它可以构建但应用程序崩溃。
mozilla_firefox

77

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


10
我通常会否决这些评论,但实际上,它可行!
Ahmed Hegazy

2
之所以Allow computer to connect to this device可行,是因为该提示不是第一次显示,而是第二次显示。
凯尔·克莱格

这是在我从GitHub启动新项目时在标有“记住此计算机”的计算机上工作的。
Z. Bagley

所以。将新的处理器体系结构添加到ABI过滤器后,Studio停止识别设备。这个技巧帮助我解决了这个问题。!
Vetalll '19

对我来说,这是发生在仿真器
AKHIL Surapuram

41

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

在此处输入图片说明

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

在此处输入图片说明

PS:我在Mac上使用Android Studio 2.3


这很完美-我的gradle设置定义了ARM和x86构建,但是我不得不指示Android Studio构建x86变体,而不是ARM变体(可能适用于iOS)。谢谢!
jevon '18

请注意,您需要选择项目,否则执行此操作的选项将显示为灰色。我认为还有其他一些条件可能也会使它变灰-您可能需要进行清洁和重建。
德隆兹

16

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


1
上述答案均无效。这工作了。非常感谢。
thedarkpassenger

我从更改Camera (PTP)Media Device (MTP),它也适用。谢谢!
Konayuki

11

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

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

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

希望能帮助到你!!!


1
armeabi如果您定位的是SDK 19及更高版本,则应该放弃。Android本身不支持4.4
版本

9

以我的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

终于能够在设备上运行


7

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

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

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

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

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

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

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


6

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

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

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

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


6

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





2

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


2

如果您使用Ubuntu:

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


0

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


0

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


0

使用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})
            }
        }
    }
    


0

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



0

我看到这个

如果您将CMake用于构建,请检查文件\ proj.android \ gradle.properties,并更新PROP_APP_ABI以包括x86的构建,或者,也可以仅使用armeabi-v7a或arm64-v8a Android图片。

示例:PROP_APP_ABI = armeabi-v7a:arm64-v8a:x86

如果您不使用cmake,请查看\ proj.android \ app \ jni \ Application.mk,以防需要在其中更改ABI设置。


欢迎使用StackOverflow,如果需要理解答案,请添加更多描述和代码,因为它会尽快解决某人的问题。
Nensi Kasundra
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.