INSTALL_FAILED_NO_MATCHING_ABIS lors de l'installation d'apk

Réponses:

633

INSTALL_FAILED_NO_MATCHING_ABISc'est lorsque vous essayez d'installer une application qui a des bibliothèques natives et qui n'a pas de bibliothèque native pour votre architecture de processeur. Par exemple, si vous avez compilé une application pour armv7 et que vous essayez de l'installer sur un émulateur qui utilise l' architecture Intel , cela ne fonctionnera pas.

Hiemanshu Sharma
la source
1
@DanielOchoa C'est parce qu'ils n'ont pas l'habitude de conserver deux images pour une version préliminaire. Lorsque L sera officiellement lancé, je suis sûr qu'il y aura également une image Intel x86.
Hiemanshu Sharma du
1
Comment surmonter ce problème. J'utilise Genymotion Emulater et j'installe des gapps et Genymotion-ARM-Translation_v1.1 m reçoit toujours ce problème.
Prashant Maheshwari Andro
3
Si vous rencontrez ce problème sur Genymotion même lorsque vous utilisez le traducteur ARM, c'est parce que vous créez un périphérique virtuel x86 comme le Google Nexus 10. Choisissez plutôt un périphérique virtuel ARM, comme l'une des tablettes personnalisées.
enl8enmentnow
1
Aucune idée pourquoi cela ne fonctionnera pas sur un Nexus 9 exécutant 5.1.1. Cela fonctionne très bien sur une tablette Sony Xperia Z2 exécutant 4.4.2. Compilé Sdk 21, min 17 abd ciblé 22.
Bear
3
J'ai eu ce problème lors de l'utilisation de l'émulateur Android Studio pour un Nexus 5x sur ma machine Windows. Pour des raisons de vitesse [10 fois plus rapide], la valeur par défaut simule le téléphone comme s'il fonctionnait avec une architecture Intel x86 [Le Snapdragon 808 de Nexus 5x est en fait basé sur ARM: tomshardware.com/reviews/lg-g4,4353-2.html ] . J'ai corrigé l'erreur en entrant dans le gestionnaire AVD, en sélectionnant le périphérique simulé qui me donnait l'erreur et en cliquant sur le bouton Modifier où j'ai mis en place une architecture ARM (armeabi-v7a). Après ce changement plus le redémarrage de l'émulateur, l'installation s'est déroulée sans problème
Antonino
150

INSTALL_FAILED_NO_MATCHING_ABIS, c'est lorsque vous essayez d'installer une application qui possède des bibliothèques natives et qui n'a pas de bibliothèque native pour votre architecture de processeur. Par exemple, si vous avez compilé une application pour armv7 et que vous essayez de l'installer sur un émulateur qui utilise l'architecture Intel à la place, cela ne fonctionnera pas.

Utilisation de Xamarin sur Visual Studio 2015. Résolvez ce problème en:

  1. Ouvrez votre xamarin .sln
  2. Faites un clic droit sur votre projet Android
  3. Cliquez sur les propriétés
  4. Cliquez sur Options Android
  5. Cliquez sur l'onglet «Avancé»
  6. Sous "Architectures prises en charge", vérifiez les éléments suivants:

    1. armeabi-v7a
    2. x86
  7. enregistrer

  8. F5 (build)

Edit: Cette solution a également été signalée comme fonctionnant sur Visual Studio 2017 .

Edit 2: Cette solution a également été signalée comme fonctionnant sur Visual Studio 2017 pour Mac .

Guirlande Asher
la source
6
Cette solution a également fonctionné sur Visual Studio 2017, pour un projet Xamarin.Android.
corentinaltepe
1
Cela a également fonctionné pour moi lors de l'utilisation d'un projet d'application Android WebView
JRodd
4
Il semble que sur Xamarin, chaque nouveau jour, un nouvel obstacle inattendu m'empêche d'exécuter mon application (qui a fonctionné hier). Puisque mon fichier csproj est sur dropbox, j'ai pu vérifier l'historique des versions, et cette propriété n'était pas dans le fichier hier, elle manquait complètement. Aujourd'hui, j'ai dû ajouter l'option x86 pour faire fonctionner l'application. Pourquoi diable ou xamarin utilise-t-il soudainement différentes valeurs par défaut? C'est tellement frustrant! Quoi qu'il en soit, grâce à des gens comme vous, je peux surmonter et continuer mon travail. Merci beaucoup et +1 pour vous!
TMan
2
J'aimerais pouvoir voter plus d'une fois ... Testé et travaillant sur VS 2017 pour Mac.
JordiVilaplana
Pour Visual Studio Community 2019 pour Mac: 1. Faites un clic droit sur votre projet Android 2. Cliquez sur Options 3. Cliquez sur Android Build 4. Avancé
null
87

Je poste une réponse d'un autre fil parce que c'est ce qui a bien fonctionné pour moi, l'astuce est d'ajouter le support pour les deux architectures:

Publier cela parce que je n'ai pas pu trouver de réponse directe et j'ai dû regarder quelques articles différents pour obtenir ce que je voulais faire ...

J'ai pu utiliser l'émulateur x86 Accelerated (HAXM) en l'ajoutant simplement au script build.gradle de mon module dans le bloc android {}:

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

Exécutez (build) ... Maintenant, il y aura (yourapp) -x86-debug.apk dans votre dossier de sortie. Je suis sûr qu'il existe un moyen d'automatiser l'installation lors de l'exécution, mais je démarre simplement mon émulateur HAXM préféré et j'utilise la ligne de commande:

adb install (yourapp)-x86-debug.apk
Driss Bounouar
la source
2
Échec [INSTALL_FAILED_NO_MATCHING_ABIS]
abbasalim
N'a pas fonctionné pour moi et n'a pas pu trouver de (yourapp)-x86-debug.apkfichier dans la sortie de mon projet.
Eido95
Je ne veux pas nécessairement diviser les APK, est-ce une option? @DrissBounouar
ericn
Vous pouvez utiliser l'apk universel, probablement avec les deux architectures.
Driss Bounouar
toujours confronté au même problème
Vikash Parajuli
61

Si vous utilisez Genymotion, vous devez installer ARM Translation et GApps

R00We
la source
Dans certaines API que vous avez utilisées, vous devez ajouter à la fois "ARM Translation Installer v1.1" et "GApps pour votre version Android".
saneryee
4
MISE À JOUR 28 mai 2017: ce guide n'est plus pris en charge et ne fonctionne probablement pas. S'il vous plaît ne l'utilisez plus et ne demandez plus d'assistance. de développeurs xda
AndroidCoolestRulest
1
Vous pouvez suivre ce lien pour installer ARM Translation
Devansh Maurya
37

Il s'agit en effet d'une étrange erreur qui peut être causée par le multidexing de votre application. Pour le contourner, utilisez le bloc suivant dans le fichier build.gradle de votre application :

android {
  splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
  }
  ...[rest of your gradle script]
IgorGanapolsky
la source
1
Salut. Cela a permis de construire mon projet avec succès, mais cela m'a quand même donné la même erreur. Je travaille sur mac, genymotion. En outre, en général, ces paramètres sont-ils indiqués uniquement pour la version de débogage ou pour la version finale?
myDoggyWritesCode
@ user3241111 Ceci peut être utilisé pour le débogage et le prod. Avez-vous essayé de nettoyer votre projet. Ou peut-être invalider / redémarrer Android Studio?
IgorGanapolsky
1
@ user3241111 Si vous utilisez gradlew pour les versions de terminal de ligne de commande, vous pouvez toujours nettoyer votre projet avec gradle.
IgorGanapolsky
1
J'ai essayé cette solution, cela a fonctionné .. Dans mon projet, il n'y avait pas d'APP_ABI. Mais je l'ai ajouté en conséquence et il ne crée qu'une seule apk et cela fonctionne. stackoverflow.com/a/35565901/3241111
myDoggyWritesCode
1
De plus, je viens d'ajouter le démon gradle activé et cela a tellement accéléré le processus ... Quoi qu'il en soit, merci pour votre soutien :)
myDoggyWritesCode
11

Je sais qu'il y a eu beaucoup de réponses ici, mais la version TL; DR est la suivante (si vous utilisez Xamarin Studio):

  1. Cliquez avec le bouton droit sur le projet Android dans l'arborescence de la solution
  2. Sélectionner Options
  3. Aller à Android Build
  4. Aller à l' Advancedonglet
  5. Vérifiez les architectures que vous utilisez dans votre émulateur (Probablement x86/ armeabi-v7a/ armeabi)
  6. Faites une application kickass :)
Jonathan Perry
la source
11

Cette solution a fonctionné pour moi. Essayez ceci, ajoutez les lignes suivantes dans le fichier build.gradle de votre application

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

Sur Android 8:

apache.commons.io:2.4

cela donne INSTALL_FAILED_NO_MATCHING_ABIS, essayez de le changer en 2.5 ou 2.6 et cela fonctionnera ou le commentera.

Saba
la source
6
Merci beaucoup, vous sauvez ma journée. Je ne sais pas pourquoi j'ai eu: implémentation 'org.apache.directory.studio:org.apache.commons.io:2.4'
Pierrick HYMBERT
7

Le commentaire de @ enl8enmentnow devrait être une réponse pour résoudre le problème en utilisant genymotion:

Si vous rencontrez ce problème sur Genymotion même lorsque vous utilisez le traducteur ARM, c'est parce que vous créez un périphérique virtuel x86 comme le Google Nexus 10. Choisissez plutôt un périphérique virtuel ARM, comme l'une des tablettes personnalisées.

muetzenflo
la source
1
Je travaille sur mac et il est probablement construit pour un périphérique virtuel x86. J'ai également essayé avec la tablette personnalisée Genymotion, cela n'a pas fonctionné, et j'ai donné la même erreur lors de l'installation
myDoggyWritesCode
7

cela a fonctionné pour moi ... Android> Scripts Gradle> build.gradle (Module: app) ajouter à l'intérieur d'Android *

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

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

entrez la description de l'image ici


la source
6

Visual Studio mac - vous pouvez modifier la prise en charge ici:

entrez la description de l'image ici

LeRoy
la source
6

j'ai eu ce problème en utilisant la bibliothèque bitcoinJ (org.bitcoinj: bitcoinj-core: 0.14.7) ajoutée à build.gradle (dans l'application du module) une option de packaging dans la portée Android. ça m'a aidé.

android {
...
    packagingOptions {
        exclude 'lib/x86_64/darwin/libscrypt.dylib'
        exclude 'lib/x86_64/freebsd/libscrypt.so'
        exclude 'lib/x86_64/linux/libscrypt.so'
    }
}
ediBersh
la source
Merci. Cela m'a aidé avec Bitcoin J Integration.
Umer Kiani
Merci beaucoup, j'essaie de nombreuses solutions mais cette solution fonctionne pour moi pour moi Mon problème est que scrypt-1.4.0.jar ne s'installe pas dans la version Android Pie (Nokia 7.1) Appareil
Sagar Pithiya
3

Dans mon cas, dans un projet xamarin, dans Visual Studio, l'erreur a été supprimée en sélectionnant les propriétés -> Options Android et cochez Utiliser les temps d'exécution du partage et Utiliser le déploiement rapide, dans certains cas, l'un d'eux entrez la description de l'image ici

Saleem Kalro
la source
2

Pour genymotion sur mac, j'obtenais une erreur INSTALL_FAILED_NO_MATCHING_ABIS lors de l'installation de mon apk.

Dans mon projet, il n'y avait pas d '"APP_ABI" mais je l'ai ajouté en conséquence et il n'a créé qu'une seule apk pour les deux architectures mais cela a fonctionné. https://stackoverflow.com/a/35565901/3241111

myDoggyWritesCode
la source
2

Dans l'édition 2017 de Visual Studio Community, la sélection des ABI pris en charge dans les options Android ne fonctionne parfois pas.

Dans ce cas, vérifiez que le fichier .csproj a la ligne suivante et aucune ligne en double dans les mêmes configurations de build.

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

Afin de modifier,

  1. Déchargez votre projet Android
  2. Faites un clic droit et sélectionnez Modifier le projet ...
  3. Assurez-vous d'avoir la ligne ci-dessus une seule fois dans une configuration de build
  4. sauver
  5. Faites un clic droit sur votre projet Android et rechargez
Kusal Dissanayake
la source
1

Fondamentalement, si vous avez tout essayé ci-dessus et que vous avez toujours la même erreur "Parce que je fais face à ce problème avant aussi", vérifiez quel .jar ou .aar ou module que vous avez ajouté peut être la seule bibliothèque utilisant ndk, et que celle-ci ne prend pas en charge 8.0 (Oreo) +, j'utilise également la bibliothèque de sockets Microsoft SignalR en ajoutant ses fichiers .jar et, enfin, j'ai découvert que l'application ne s'installe pas dans Oreo, puis je supprime cette bibliothèque car il n'y a actuellement aucune solution sur sa page git et j'en choisis une autre .

Veuillez donc vérifier la bibliothèque que vous utilisez et rechercher à ce sujet si vous en aviez vraiment besoin.

Sumit Kumar
la source
1

J'ai rencontré ce problème lors du passage d'Android 7 (Nougat) à Android 8 (Oreo).

J'ai essayé plusieurs façons énumérées ci-dessus et à ma malchance, rien n'a fonctionné.

J'ai donc changé le fichier .apk en fichier .zip, je l'ai extrait et j'ai trouvé le dossier lib avec lequel ce fichier était là /x86_64/darwin/libscrypt.dylib donc pour le supprimer j'ai ajouté un code dans mon module build.gradle sous la section android (ie )

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

Problème de santé résolu

Khan.N
la source
1

En général, pour savoir quelle dépendance de bibliothèque a ABI incompatible,

  • créer un fichier APK dans Android Studio (menu Build> Build Bundle (s) / APK (s)> Build APK (s)) // actual on 01.04.2020
  • renommer le fichier APK, en remplaçant l'extension "apk" par l'extension "zip"
  • décompresser le fichier zip dans un nouveau dossier
  • aller dans le dossier libs
  • savoir quelles bibliothèques * .jar avec des ABI incompatibles existent

Vous pouvez essayer de mettre à niveau la version / supprimer / remplacer ces bibliothèques pour résoudre INSTALL_FAILED_NO_MATCHING_ABIS lors de l'installation du problème apk

Denis Dmitrienko
la source
0

Cela m'est arrivé. J'ai vérifié le SDK Manager et il m'a dit que celui que j'utilisais avait une mise à jour. Je l'ai mis à jour et le problème a disparu.

Barry Fruitman
la source
0

Assez tard, mais je suis juste tombé là-dessus. C'est pour Xamarin.Android. Assurez-vous que vous n'essayez pas de déboguer en mode release. J'obtiens exactement la même erreur en mode de libération et en essayant de déboguer. Le simple passage de la version au débogage a permis au mien de s'installer correctement.

Nieminen
la source
0

Dans mon cas, j'avais besoin de télécharger la version x86 de l'application.

  1. Accédez à https://www.apkmirror.com/
  2. Recherchez l'appli
  3. Sélectionnez le premier dans la liste
  4. Regardez en haut de la page, où se trouve [Nom de la société]> [Nom de l'application]> [Numéro de version]
  5. Cliquez sur le nom de l'application
  6. Cliquez sur «Toutes les variantes»
  7. La liste doit contenir une variante x86 à télécharger
Fidel
la source
0

Dans mon cas, la définition des options suivantes m'aide

entrez la description de l'image ici

Stefan Michev
la source