web-dev-qa-db-fra.com

INSTALL_FAILED_NO_MATCHING_ABIS lors de l'installation apk

J'ai essayé d'installer mon application sur un périphérique virtuel Android L Preview Intel Atom. Elle a échoué avec l'erreur suivante:

INSTALL_FAILED_NO_MATCHING_ABIS

Qu'est-ce que ça veut dire?

411
Peter Zhao

INSTALL_FAILED_NO_MATCHING_ABIS est le moment où vous essayez d'installer une application qui possède des bibliothèques natives et qui ne possède pas de bibliothèque native pour votre architecture cpu. Par exemple, si vous avez compilé une application pour armv7 et essayez de l’installer sur un émulateur qui utilise l’architecture Intel , cela ne fonctionnera pas. 

559
Hiemanshu Sharma

INSTALL_FAILED_NO_MATCHING_ABIS s’applique lorsque vous essayez d’installer une application avec des bibliothèques natives et qu’elle n’a pas de bibliothèque native pour votre architecture cpu. Par exemple, si vous avez compilé une application pour armv7 et tentez de l'installer sur un émulateur utilisant l'architecture Intel, cela ne fonctionnera pas.

Utilisation de Xamarin sous Visual Studio 2015. Résoudre 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", cochez la case suivante:

    1. armeabi-v7a
    2. x86
  7. enregistrer

  8. F5 (build)

Modifier: Cette solution fonctionne également sous Visual Studio 2017.

Edit 2: Cette solution fonctionne sous/ Visual Studio 2017 pour Mac .

145
Asher Garland

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

Afficher ceci parce que je ne pouvais pas trouver de réponse directe et que je devais examiner plusieurs messages différents pour obtenir ce que je voulais faire ...

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

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

Run (build) ... Maintenant, il y aura un (yourapp) -x86-debug.apk dans votre dossier de sortie. Je suis sûr qu'il existe un moyen d'automatiser l'installation sous Exécuter, mais je viens de démarrer mon émulateur HAXM préféré et d'utiliser la ligne de commande:

adb install (yourapp)-x86-debug.apk
80
Driss Bounouar

Si vous utilisez Genymotion, vous avez besoin Installation de ARM Translation and GApps

58
R00We

Il s'agit en effet d'une erreur étrange qui peut être provoqué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]
32
IgorGanapolsky

Je sais qu'il y avait 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électionnez Options
  3. Aller au Android Build
  4. Aller à l'onglet Advanced
  5. Vérifiez les architectures que vous utilisez dans votre émulateur (Probablement x86/armeabi-v7a/armeabi)
  6. Faire une application kickass :)
11
Jonathan Perry

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

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

7
muetzenflo

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
    }
}
6
vaibhav

Visual Studio mac - vous pouvez modifier le support ici:

 enter image description here

6
LeRoy

j'ai eu ce problème en utilisant la bibliothèque BitcoinJ (org.bitcoinj: bitcoinj-core: 0.14.7).

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

cela a fonctionné pour moi ... Android> Scripts Gradle> build.gradle (Module: app)

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

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

 enter image description here

2
user8554744

Dans mon cas, dans un projet xamarin, erreur Visual Studio supprimée en sélectionnant Propriétés -> Options Android et en sélectionnant Utiliser les temps d'exécution partagés et Utiliser le déploiement rapide, dans certains cas, l'un d'entre eux enter image description here

2
saleem kalro

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 commentera.

2
Saba Jafarzadeh

Dans l'édition 2017 de Visual Studio Community, la sélection des ABI prises en charge à partir des options Android ne fonctionne pas.

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

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

Pour éditer,

  1. Déchargez votre projet Android 
  2. Faites un clic droit et sélectionnez Modifier le projet ... 
  3. Assurez-vous que vous avez la ligne ci-dessus une seule fois dans une configuration de construction 
  4. Sauvegarder 
  5. Faites un clic droit sur votre projet Android et rechargez
2
Kusal Dissanayake

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

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

1
myDoggyWritesCode

Assez tard, mais juste couru dans cela. Ceci est pour Xamarin.Android. Assurez-vous que vous n'essayez pas de déboguer en mode release. Je reçois exactement la même erreur si je suis en mode de publication et que je tente de déboguer. Le simple fait de passer de release à debug a permis à la mienne de s’installer correctement.

0
Nieminen

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

  1. Allez à https://www.apkmirror.com/
  2. Rechercher l'application
  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 devrait contenir une variante x86 à télécharger
0
Fidel

En gros, si vous avez essayé Tout ci-dessus et que vous avez toujours la même erreur "Parce que je suis déjà confronté à ce problème aussi", vérifiez quel .jar ou .aar ou module que vous avez ajouté est peut-être celle qui utilise ndk, et celle-ci ne supporte pas 8.0 (Oreo) +, de même, j'utilise Microsoft SignalR socket Library en ajoutant ses fichiers .jar et, dernièrement, j'ai découvert que l'application ne s'installait pas à Oreo, puis je retirais cette bibliothèque car, à l'heure actuelle, il n'y avait pas de solution sur sa page git. .

Veuillez donc vérifier la bibliothèque que vous utilisez et effectuer une recherche à ce sujet si vous en aviez grand besoin.

0
Sumit Kumar

J'ai rencontré ce problème lorsque je suis passé d'Android 7(Nougat) à Android 8 (Oreo).

J'ai essayé plusieurs manières énumérées ci-dessus et à ma mauvaise fortune rien n'a fonctionné.

J'ai donc changé le fichier .apk en fichier .Zip extrait et trouvé le dossier lib avec lequel ce fichier était là /x86_64/darwin/libscrypt.dylib afin de le supprimer, j'ai ajouté code dans mon module build.gradle sous la section Android (c'est-à-dire)

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

Cheers problème résolu

0
Khan.N

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

0
Barry Fruitman