¿Cuál es el motivo del error "El dispositivo es compatible con x86, pero el APK solo es compatible con armeabi-v7a"?

90

Estoy jugando con Android Studio probando algunos proyectos desde GitHub y cuando intento emular el apk, no me deja elegir un emulador.

Me dice:

El dispositivo es compatible con x86, pero el APK solo es compatible con armeabi-v7a

¿Por qué hace esto?

Alejandro Ibarra
fuente
¿Qué AVD usaste? ¿Qué imagen del sistema? ¿Qué proyecto de GitHub?
OneCricketeer
En otras palabras, las imágenes Intel x86 no van a ejecutar código ARM.
OneCricketeer
github.com/jreyes/mirror
Alexander Ibarra
Quería usar un Nexus 10 con Android 5.1
Alexander Ibarra
De acuerdo, ¿y usó la imagen del sistema ARM eabi v7 o una imagen Intel Atom x86? Verifique lo que ha instalado en su administrador de SDK.
OneCricketeer

Respuestas:

85

Tuve el mismo problema, comprobé build.gradle del módulo: app . Resulta que hay tal configuración:

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

cuando comenté todo, todo funcionó bien.

Estaba tratando de lidiar con el proyecto React Native Android .

Bruce Lee
fuente
1
Creo que te refieres a build.gradle;)
Ryan James
2
Tuve el mismo problema y para mí "x86" simplemente faltaba allí
Thomas
1
Esto funcionó para mí; sin embargo, todo lo que tenía que hacer era permitir la depuración en mi dispositivo real y podía descomentar esta línea nuevamente.
Boomer Rogers
¿Qué sección debo poner ndk?
Ömrüm Çetin
No funcionó para mí en java / kotlin, se compila pero la aplicación falla.
mozilla_firefox
77

Desactive la depuración USB y vuelva a activarla en el dispositivo de hardware.

usuario3157940
fuente
10
Esos comentarios normalmente los rechazaría, pero en realidad, ¡funcionan!
Ahmed Hegazy
2
Esto funciona porque el Allow computer to connect to this devicemensaje no se mostró la primera vez, pero sí la segunda.
Kyle Clegg
Esto funcionó en una computadora en la que tenía marcado "recordar para esta computadora" cuando comencé un nuevo proyecto desde GitHub.
Z. Bagley
Entonces. Después de agregar una nueva arquitectura de procesadores al filtro ABI, Studio dejó de reconocer el dispositivo. Este consejo me ayudó a resolver el problema. !!
Vetalll
Para mí, esto está sucediendo en Emulator
Akhil Surapuram
41

En Android Studio, seleccione el menú Crear ,

ingrese la descripción de la imagen aquí

luego haga clic en Seleccionar Variante de compilación ... y en la ventana 'Variantes de compilación' seleccione x86Debug (o lanzamiento)

ingrese la descripción de la imagen aquí

PD: estoy usando Android Studio 2.3 en Mac

rafahoro
fuente
Esto funcionó a la perfección: mi configuración de Gradle definió compilaciones ARM y x86, pero tuve que instruir a Android Studio para que compilara la variante x86 en lugar de la variante ARM (probablemente para iOS). ¡Gracias!
jevon
Tenga en cuenta que debe tener el proyecto seleccionado, o la opción para hacerlo estará atenuada. Creo que hay algunas otras condiciones que también pueden atenuarlo; es posible que deba hacer limpieza y reconstruir.
Dronz
16

En Linux: Archivo> Invalidar caché / Reiniciar En el teléfono: En su lugar Cargue este cambio de dispositivo para Transferir fotos (PTP)

rudicjovan
fuente
1
Ninguna de las respuestas anteriores funcionó. Esto funcionó. Muchas gracias.
thedarkpassenger
Cambié de Camera (PTP)a Media Device (MTP)y también funciona. ¡Gracias!
Konayuki
11

Tuve un problema similar y lo resolví agregando el valor "x86" a la lista "abiFilters" como se muestra a continuación:

[Abra el archivo build.gradle (Módulo: aplicación)] y busque " ndk " en deafultSection y agregue "x86".

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

¡¡¡Espero eso ayude!!!

Roopesh Reddy
fuente
1
Probablemente debería dejar de hacerlo armeabisi tiene como objetivo el SDK 19 o superior. Android en sí no lo admite a partir de la
versión
9

En mi caso de máquina Linux adb devicesmostró

List of devices attached 
44b194f5    no permissions

Luego reinició el servidor adb

sudo adb kill-server

y entonces

sudo adb start-server

luego conecte su dispositivo, encienda la depuración y escriba

adb devices
List of devices attached 
44b194f5    device

Finalmente pudo ejecutarse en el dispositivo.

Sachin K
fuente
7

En mi caso, mi aplicación usa algunas bibliotecas nativas. Cada plataforma requiere la construcción de las bibliotecas correspondientes.

Por lo tanto, la biblioteca nativa de x86 (o cualquier otra) plataforma no se genera. Debe haber agregado un abifilter en alguna parte:

Hay varios lugares donde se pueden especificar filtros abi:

  • Application.mk agrega la plataforma que necesitas así:

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

    busque abiFilters y agregue la plataforma que necesita como esta:

    abiFilters   "armeabi","armeabi-v7a","x86"
    
yao
fuente
6

El dispositivo es compatible con x86, pero el APK solo es compatible con armeabi-v7a)

Parece que usaste una x86imagen en el emulador.

Crea uno separado. Elija la pestaña "otras imágenes" para buscar dispositivos de brazo, si es necesario.

O ejecútelo en un dispositivo real. El repositorio que enumeró está destinado a ejecutarse en una Raspberry Pi 3 / ODroid, creo.

OneCricketeer
fuente
6

Puede confirmar, activar y desactivar la depuración USB en Opciones de desarrollador resolvió el problema. Tal vez incluso cancele la ventana "Seleccionar destino de implementación" en Android Studio e intente ejecutar la aplicación nuevamente después de alternar la depuración USB.

Val Geyvandov
fuente
5

Para mí funcionó cambiando la opción de cable de

-> Charge Only. 

A

-> Transfer file.
Sushil Chaudhary
fuente
4

Solo ve al dispositivo Settings >> Developer Options >> Restore Default Settingsy habilitaUSB debugging

Iman Marashi
fuente
3

El siguiente código funcionó para mí:

ndk {
     abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}
C-lio García
fuente
2

En mi dispositivo físico, comencé a recibir esto. La solución fue ir a la Configuración del desarrollador y apagar y encender la depuración USB.

svguerin3
fuente
2

Si usa Ubuntu:

  1. asegúrese de que la depuración USB esté activada
  2. verifique su conexión de cable
  3. en la barra de notificaciones, verifique la notificación del sistema Android y tóquela para cambiar el estado de carga a la transferencia de archivos
  4. ahora vaya al terminal y escriba: dispositivos adb después de ejecutar este comando adb reiniciar y su dispositivo se muestra en la lista
mohsen khalili
fuente
1

adb kill-server

servidor de inicio adb

Funciona para mí en el sistema operativo Windows.

siddhartha shankar
fuente
0

Pruebe su código en un teléfono real. Si aún tiene el mismo problema, vuelva a importar su código y antes de esto, debe actualizar su SDK y crear un nuevo emulador con la imagen del sistema ARM.

Adi
fuente
0

Muchas veces esto significa que no le ha otorgado a su computadora portátil / computadora acceso a su dispositivo. Eche un vistazo a su dispositivo y haga clic en el botón "Permitir acceso", así como en los permisos de depuración.

NVA
fuente
0

Ejecutar un AVD usando el procesador x86 es 10 veces más rápido que usar el emulador ARM, pero la mayoría de las veces solo está compilando su APK para ARM. Para tener ejecuciones de emulación más rápidas usando un AVD x86, tuve que hacer lo siguiente (para un proyecto 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})
            }
        }
    }
    
nikc
fuente
0

Reiniciar el dispositivo resolvió el problema para mí (React-native)

O. Borcuhin
fuente
0

Me pasó después de actualizar Android Studio. En mi caso, sucedió porque la configuración de compilación no se configura automáticamente en x86Debug-x86. Simplemente cámbielo abriendo Build >> Select Build Variant >> Cambie la opción de build variant de armeabi-v7a a x86Debug-x86 o lo que necesite en el emulador.

Rico Valentino
fuente
0

Intente habilitar Fuentes desconocidas desde Opciones de seguridad. Funcionó para mí.

Sathish Subramani
fuente
0

veo esto

Si está usando CMake para sus compilaciones, verifique el archivo \ proj.android \ gradle.properties y actualice PROP_APP_ABI para incluir las compilaciones para x86, o alternativamente, puede usar armeabi-v7a o arm64-v8a Android imágenes.

Ejemplo: PROP_APP_ABI = armeabi-v7a: arm64-v8a: x86

Si no está usando cmake, busque en \ proj.android \ app \ jni \ Application.mk en caso de que necesite cambiar la configuración de ABI allí.

David Arribas
fuente
Bienvenido a StackOverflow, agregue más descripción y código si es necesario para comprender la respuesta porque resolverá el problema de alguien lo antes posible.
Nensi Kasundra