INSTALL_FAILED_NO_MATCHING_ABIS cuando instale apk


Respuestas:


633

INSTALL_FAILED_NO_MATCHING_ABISes cuando intentas instalar una aplicación que tiene bibliotecas nativas y no tiene una biblioteca nativa para tu arquitectura de CPU. Por ejemplo, si compiló una aplicación para armv7 y está tratando de instalarla en un emulador que utiliza la arquitectura Intel , no funcionará.


1
@DanielOchoa Es porque no van a mantener dos imágenes para una versión preliminar. Cuando se lanza oficialmente L, estoy seguro de que también habrá una imagen Intel x86.
Hiemanshu Sharma

1
Cómo superar este problema. Estoy usando Genymotion Emulater e instalo gapps y Genymotion-ARM-Translation_v1.1 todavía tengo este problema.
Prashant Maheshwari Andro

3
Si tiene este problema en Genymotion, incluso cuando utiliza el traductor ARM, es porque está creando un dispositivo virtual x86 como Google Nexus 10. Elija un dispositivo virtual ARM, como una de las tabletas personalizadas.
enl8enmentnow

1
Alguna idea de por qué esto no funcionará en un Nexus 9 con 5.1.1. Funciona bien en una tableta Sony Xperia Z2 con 4.4.2. Compilado Sdk 21, min 17 y apuntado a 22.
Tenga

3
Tuve este problema al usar el emulador de Android Studio para un Nexus 5x en mi máquina Windows. Por razones de velocidad [10 veces más rápido], el valor predeterminado es simular el teléfono como si estuviera trabajando con una arquitectura Intel x86 [Snapdragon 808 de Nexus 5x se basa realmente en ARM: tomshardware.com/reviews/lg-g4,4353-2.html ] . Solucioné el error al ingresar al administrador AVD, seleccioné el dispositivo simulado que me estaba dando el error y hice clic en el botón Editar donde configuré una arquitectura ARM (armeabi-v7a). Después de este reinicio del cambio más el emulador, la instalación se realizó sin problemas
Antonino

150

INSTALL_FAILED_NO_MATCHING_ABIS es cuando intentas instalar una aplicación que tiene bibliotecas nativas y no tiene una biblioteca nativa para tu arquitectura de CPU. Por ejemplo, si compiló una aplicación para armv7 y está tratando de instalarla en un emulador que utiliza la arquitectura Intel, no funcionará.

Usando Xamarin en Visual Studio 2015. Solucione este problema:

  1. Abra su xamarin .sln
  2. Haga clic derecho en su proyecto de Android
  3. Haga clic en propiedades
  4. Haga clic en Opciones de Android
  5. Haga clic en la pestaña 'Avanzado'
  6. En "Arquitecturas compatibles", haga lo siguiente:

    1. armeabi-v7a
    2. x86
  7. salvar

  8. F5 (compilación)

Editar: también se ha informado que esta solución funciona en Visual Studio 2017 .

Edición 2: también se ha informado que esta solución funciona en Visual Studio 2017 para Mac .


66
Esa solución también funcionó en Visual Studio 2017, para un proyecto Xamarin.Android.
corentinaltepe

1
Esto también funcionó para mí cuando uso un proyecto de aplicación Android WebView
JRodd

44
Parece que en Xamarin, en cada nuevo día hay un nuevo obstáculo inesperado que me impide ejecutar mi aplicación (que funcionó ayer). Como mi archivo csproj está en Dropbox, pude verificar el historial de versiones, y esta propiedad no estaba en el archivo ayer, faltaba por completo. Hoy, tuve que agregar la opción x86 para que la aplicación se ejecute. ¿Por qué demonios xamarin o android usan repentinamente diferentes valores predeterminados? ¡Esto es muy frustrante! De todos modos, gracias a personas como tú, puedo superar y seguir trabajando. ¡Muchas gracias y +1 por ti!
TMan

2
Ojalá pudiera votar más de una vez ... Probado y trabajando en VS 2017 para Mac.
JordiVilaplana

Para Visual Studio Community 2019 para Mac: 1. Haga clic derecho en su proyecto de Android 2. Haga clic en Opciones 3. Haga clic en Android Build 4. Avanzado
nulo

87

Estoy publicando una respuesta de otro hilo porque es lo que funcionó bien para mí, el truco es agregar soporte para ambas arquitecturas:

Publicando esto porque no pude encontrar una respuesta directa y tuve que mirar un par de publicaciones diferentes para obtener lo que quería hacer ...

Pude usar el emulador acelerado x86 (HAXM) simplemente agregando esto al script build.gradle de mi Módulo dentro del bloque android {}:

splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi-v7a'
            universalApk true
        }
    }

Ejecute (compilar) ... Ahora habrá un (yourapp) -x86-debug.apk en su carpeta de salida. Estoy seguro de que hay una manera de automatizar la instalación en Run, pero acabo de iniciar mi emulador HAXM preferido y uso la línea de comandos:

adb install (yourapp)-x86-debug.apk

2
Fallo [INSTALL_FAILED_NO_MATCHING_ABIS]
abbasalim

No funcionó para mí y no pude encontrar el (yourapp)-x86-debug.apkarchivo en la salida de mi proyecto.
Eido95

No necesariamente quiero dividir APK, ¿es esa una opción? @DrissBounouar
ericn

Puede usar el apk universal, presumiblemente tiene ambas arquitecturas.
Driss Bounouar

sigue enfrentando el mismo problema
Vikash Parajuli


37

De hecho, este es un error extraño que puede ser causado por la multidexificación de su aplicación. Para evitarlo , use el siguiente bloque en el archivo build.gradle de su aplicación :

android {
  splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
  }
  ...[rest of your gradle script]

1
Hola. Esto hizo que mi proyecto se compilara con éxito, pero aún así me dio el mismo error. Estoy trabajando en mac, genymotion. Además, en general, ¿esta configuración que usted dijo es solo para la versión de depuración o también para la compilación de lanzamiento?
myDoggyWritesCode

@ user3241111 Esto se puede usar tanto para depuración como para producción. ¿Has intentado limpiar tu proyecto? ¿O tal vez invalidar / reiniciar Android Studio?
IgorGanapolsky

1
@ user3241111 Si está utilizando gradlew para compilaciones de terminales de línea de comandos, aún puede limpiar su proyecto con gradle.
IgorGanapolsky

1
Probé esta solución, funcionó ... En mi proyecto no había ninguna APP_ABI. Pero lo agregué en consecuencia y construyó solo una apk y funciona. stackoverflow.com/a/35565901/3241111
myDoggyWritesCode

1
Además, acabo de agregar Gradle Daemon habilitado y ha acelerado mucho el proceso ... De todos modos, gracias por su apoyo :)
myDoggyWritesCode

11

Sé que hubo muchas respuestas aquí, pero la versión TL; DR es esta (si está usando Xamarin Studio):

  1. Haga clic derecho en el proyecto de Android en el árbol de soluciones
  2. Seleccione Options
  3. Ir Android Build
  4. Ir a la Advancedpestaña
  5. Verifique las arquitecturas que usa en su emulador (Probablemente x86/ armeabi-v7a/ armeabi)
  6. Hacer una aplicación kickass :)

11

Esta solución funcionó para mí. Pruebe esto, agregue las siguientes líneas en el archivo build.gradle de su aplicación

splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
}

11

En Android 8:

apache.commons.io:2.4

le da INSTALL_FAILED_NO_MATCHING_ABIS, intente cambiarlo a 2.5 o 2.6 y funcionará o lo comentará.


66
Muchas gracias, me salvas el día. No sé por qué obtuve: implementación 'org.apache.directory.studio:org.apache.commons.io:2.4'
Pierrick HYMBERT

7

El comentario de @ enl8enmentnow debería ser una respuesta para solucionar el problema usando genymotion:

Si tiene este problema en Genymotion, incluso cuando utiliza el traductor ARM, es porque está creando un dispositivo virtual x86 como Google Nexus 10. Elija un dispositivo virtual ARM, como una de las tabletas personalizadas.


1
Estoy trabajando en Mac y probablemente esté construido para un dispositivo virtual x86. Intenté con la tableta personalizada genymotion también, no funcionó, y di el mismo error durante la instalación
myDoggyWritesCode

7

esto funcionó para mí ... Android> Gradle Scripts> build.gradle (Módulo: aplicación) agregar dentro de Android *

android {
  //   compileSdkVersion 27
     defaultConfig {
        //
     }
     buildTypes {
        //
     }
    // buildToolsVersion '27.0.3'

    splits {
           abi {
                 enable true
                 reset()
                 include 'x86', 'armeabi-v7a'
                 universalApk true
               }
    }
 }

ingrese la descripción de la imagen aquí


6

Visual Studio mac: puede cambiar el soporte aquí:

ingrese la descripción de la imagen aquí


6

Tuve este problema al usar la biblioteca bitcoinJ (org.bitcoinj: bitcoinj-core: 0.14.7) agregada a build.gradle (en la aplicación del módulo) opciones de empaque dentro del alcance de Android. Me ayudó.

android {
...
    packagingOptions {
        exclude 'lib/x86_64/darwin/libscrypt.dylib'
        exclude 'lib/x86_64/freebsd/libscrypt.so'
        exclude 'lib/x86_64/linux/libscrypt.so'
    }
}

Gracias. Me ayudó con la integración de Bitcoin J.
Umer Kiani

Muchas gracias. Intento muchas soluciones, pero esta solución funciona para mí. Mi problema es que scrypt-1.4.0.jar no se instala en la versión de Android Pie (Nokia 7.1) Dispositivo
Sagar Pithiya

3

En mi caso, en un proyecto xamarin, en el error visual studio eliminado seleccionando propiedades -> Opciones de Android y marcando Usar tiempos de ejecución compartidos y Usar implementación rápida, en algunos casos uno de ellos ingrese la descripción de la imagen aquí



2

En la edición 2017 de Visual Studio Community, a veces la selección de ABI compatibles de las Opciones de Android no funcionará.

En ese caso, verifique que .csproj tenga la siguiente línea y no haya líneas duplicadas en las mismas configuraciones de compilación.

 <AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>

Para editar,

  1. Descarga tu proyecto de Android
  2. Haga clic derecho y seleccione Editar proyecto ...
  3. Asegúrese de tener la línea anterior solo una vez en una configuración de compilación
  4. Salvar
  5. Haga clic derecho en su proyecto de Android y vuelva a cargar

1

Básicamente, si probó todo lo anterior y aún tiene el mismo error "Porque también estoy enfrentando este problema antes", compruebe qué .jar o .aar o módulo que agregó puede ser la biblioteca que usa ndk, y esa no es compatible con 8.0 (Oreo) +, del mismo modo, estoy usando la biblioteca de socket Microsoft SignalR agregando sus archivos .jar y luego descubrí que la aplicación no se instala en Oreo y luego eliminé esa biblioteca porque actualmente no hay solución en su página git y busco otra .

Por lo tanto, compruebe la biblioteca que está utilizando y búsquela si la necesita con impaciencia.


1

Me enfrenté a este problema cuando me mudé de Android 7 (Nougat) a Android 8 (Oreo).

He intentado varias formas mencionadas anteriormente y para mi mala suerte nada funcionó.

Así que cambié el archivo .apk a .zip, lo extraje y encontré la carpeta lib con la que estaba este archivo /x86_64/darwin/libscrypt.dylib, así que para eliminar esto agregué un código en mi módulo build.gradle debajo de la sección de Android (es decir, )

packagingOptions {
    exclude 'lib/x86_64/darwin/libscrypt.dylib'
    exclude 'lib/x86_64/freebsd/libscrypt.so'
    exclude 'lib/x86_64/linux/libscrypt.so'
}

Problema de salud resuelto


1

En general, para averiguar qué dependencia de la biblioteca tiene ABI incompatible,

  • compilar un archivo APK en Android Studio (menú Compilar> Compilar paquete (s) / APK (s)> Compilar APK (s) // actual el 01.04.2020
  • cambiar el nombre del archivo APK, reemplazando la extensión "apk" con la extensión "zip"
  • descomprimir el archivo zip en una nueva carpeta
  • ir a la carpeta libs
  • descubra qué bibliotecas * .jar con ABI incompatibles existen

Puede intentar actualizar la versión / eliminar / reemplazar estas bibliotecas para resolver INSTALL_FAILED_NO_MATCHING_ABIS cuando instale el problema apk


0

Esto me paso a mi. Revisé el SDK Manager y me dijo que el que estaba usando tenía una actualización. Lo actualicé y el problema desapareció.


0

Muy tarde, pero me encontré con esto. Esto es para Xamarin.Android. Asegúrese de que no está intentando depurar en modo de lanzamiento. Obtengo exactamente el mismo error si estoy en modo de lanzamiento e intento depurar. Simplemente cambiar de versión a depuración permitió que la mía se instalara correctamente.


0

En mi caso, necesitaba descargar la versión x86 de la aplicación.

  1. Vaya a https://www.apkmirror.com/
  2. Busca la aplicación
  3. Seleccione el primero de la lista.
  4. Mire la parte superior de la página, donde se encuentra [Nombre de la empresa]> [Nombre de la aplicación]> [Número de versión]
  5. Haga clic en el nombre de la aplicación
  6. Haga clic en 'Todas las variantes'
  7. La lista debe contener una variante x86 para descargar

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.