错误是什么原因"设备支持x86,但APK仅支持armeabi-v7a"

时间:2017-01-21 05:17:06

标签: android android-studio

我通过测试GitHub中的一些项目来玩Android Studio,当我尝试模拟apk时,它不允许我选择模拟器。

它告诉我:

  

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

为什么会这样做?

23 个答案:

答案 0 :(得分:67)

我遇到了同样的问题,我从模块:app 查看 build.gradle 。事实证明,有一个这样的配置:

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

当我评论全部时,一切正常。

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

答案 1 :(得分:62)

关闭USB调试并将其重新打开硬件设备。

答案 2 :(得分:36)

在Android Studio中,选择构建菜单

enter image description here

然后点击选择Build Variant ... ,然后在“Build Variants”窗​​口中选择 x86Debug (或发布)

enter image description here

PS:我在Mac上使用Android Studio 2.3

答案 3 :(得分:13)

在Linux上: 文件>无效缓存/重启 在电话上: 相反,请将此设备更改为传输照片(PTP)

答案 4 :(得分:7)

我有类似的问题,我通过在“abiFilters”列表中添加“x86”值来解决它 - 如下所示 -

[Open build.gradle(Module:app)file] 并在 deafultSection 中搜索“ ndk ”并添加“x86”!

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

希望它有所帮助!!!

答案 5 :(得分:7)

对于我的Linux机器ggplot(df) + geom_text_repel(aes(x = huff_margin_dem, y = margin16dem_state, label = abbrev)) ,显示

adb devices

然后重新启动adb服务器

List of devices attached 
44b194f5    no permissions

然后

sudo adb kill-server

然后连接您的设备,打开调试并输入

sudo adb start-server

最终能够在设备上运行

答案 6 :(得分:6)

  

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

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

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

或者,在实际设备上运行。我认为你列出的回购是为了在Raspberry Pi 3 / ODroid上运行。

答案 7 :(得分:6)

可以确认,在开发者选项中关闭/打开USB调试解决了问题。甚至可能取消"选择部署目标" Android Studio中的窗口,尝试在切换USB调试后再次运行应用程序。

答案 8 :(得分:4)

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

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

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

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

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

    找到abiFilters,并添加你需要的平台,如下所示:

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

答案 9 :(得分:4)

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

答案 10 :(得分:3)

以下代码对我有用:

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

答案 11 :(得分:3)

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

请参见Enable developer options and debugging

答案 12 :(得分:3)

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

-> Charge Only. 

收件人

-> Transfer file.

答案 13 :(得分:2)

在我的物理设备上,我开始接受这个。修复程序是进入开发人员设置并关闭USB调试。

答案 14 :(得分:1)

如果您使用Ubuntu:

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

答案 15 :(得分:1)

adb kill-server

adb启动服务器

它在Windows OS上对我有用。

答案 16 :(得分:0)

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

答案 17 :(得分: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})
            }
        }
    }
    

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

答案 20 :(得分:0)

尝试从“安全性选项”中启用未知来源。 它对我有用。

答案 21 :(得分: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设置。

答案 22 :(得分:0)

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