“Device supports x86, but APK only supports armeabi-v7a”的错误原因是什么?

112
我正在通过从GitHub测试一些项目来尝试使用Android Studio,并且当我尝试模拟apk时,它不允许我选择模拟器。
它告诉我:
设备支持x86,但APK仅支持armeabi-v7a。
为什么会这样呢?

你使用了哪个AVD?使用了哪个系统镜像?使用了哪个GitHub项目? - OneCricketeer
我想使用运行Android 5.1的Nexus 10。 - Alexander Ibarra
好的,你使用了ARM EABI v7系统镜像还是Intel Atom x86镜像?请检查你安装的SDK管理器。 - OneCricketeer
感觉很蠢。刚才不得不去“其他图像”选项卡找手臂设备。谢谢! - Alexander Ibarra
对我来说,由于某些原因,我不得不重新启用 USB 调试。 - vaskort
显示剩余6条评论
25个回答

105

我曾经遇到过同样的问题,我查看了module:app中的build.gradle文件。结果发现有以下这样的配置:

我遇到相同问题,检查了module:appbuild.gradle文件。原来有这样的配置:

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

当我将所有内容注释掉时,一切都正常工作了。

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


1
我想你是指 build.gradle ;) - Ryan Pfister
2
我曾经遇到过同样的问题,对我来说,“x86”只是缺失了。 - thomas
1
这对我有用 - 但是我所需要做的就是允许在我的实际设备上调试,然后我就可以再次取消注释此行代码。 - Boomer Rogers
我应该把ndk放在哪个部分? - Omrum Cetin
在Java/Kotlin中对我没用,虽然它能够构建但应用程序会崩溃。 - mozilla-firefox

80

关闭USB调试,然后重新启用硬件设备。


10
我通常会踩这些评论,但事实上,它起了作用! - Ahmed Hegazy
2
这能够正常运行是因为“允许计算机连接到此设备”的提示第一次没有显示,但第二次显示了。 - Kyle Clegg
这在我一个被标记为“记住此计算机”的计算机上运行,当我从GitHub开始一个新项目时。 - Z. Bagley
所以,在将新的处理器架构添加到ABI过滤器后 - Studio停止识别设备。这个技巧帮助我解决了问题!! - Vetalll
对我来说,这是在模拟器中发生的。 - Akhil Surapuram

49
在Android Studio中,选择Build菜单,enter image description here然后点击Select Build Variant...,在“Build Variants”窗口中选择x86Debug(或release)。enter image description here注:我使用的是Mac上的Android Studio 2.3。

1
这个完美地运行了 - 我的gradle设置定义了ARM和x86构建,但我必须指示Android Studio构建x86变体而不是ARM变体(可能是为了iOS)。谢谢! - jevon
请注意,您需要选择项目,否则此选项将变为灰色。我认为还有一些其他条件也会使其变灰 - 您可能需要进行“清理”和重新构建。 - Dronz

16

在Linux系统中: 文件 > 无效的缓存 / 重启 在手机上: 将充电设备转换为传输照片(PTP)


1
以上的答案都没有起作用,这个可以。非常感谢。 - thedarkpassenger
我从“相机(PTP)”改为“媒体设备(MTP)”,也可以正常工作。谢谢! - Konayuki

12

我曾经遇到类似的问题,解决方法是在 "abiFilters" 列表中添加 "x86" 值,如下所示 -

[打开 build.gradle(Module: app) 文件] 并在 deafultSection 中查找 "ndk",然后将 "x86" 添加进去!

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

希望能对你有所帮助!!!


1
如果您的目标SDK为19及以上版本,则应该删除armeabi。从4.4开始,Android本身不再支持它。 - mradzinski
@mradzinski,您能否提供有关支持的文档链接? - Bitwise DEVS

11

以下代码对我有用:

ndk {
     abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}

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

终于能在设备上运行了


8

在我的情况下,我的应用程序使用一些本地库。每个平台都需要构建相应的库。

因此,不会生成x86(或任何其他)平台的本地库。您必须在某个地方添加abifilter:

可以指定多个abi过滤器的位置:

  • Application.mk add the platform you need like this:

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

    find abiFilters, and add platform you need like this:

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

8

6

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

听起来你在模拟器中使用了x86映像。

创建一个单独的映像。如果必须的话,请选择“其他映像”选项卡以查找arm设备。

或者,在实际设备上运行。我认为,你列出的repo是用于在树莓派3/ODroid上运行的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接