INSTALL_FAILED_NO_MATCHING_ABIS quando installa apk


Risposte:


633

INSTALL_FAILED_NO_MATCHING_ABISè quando stai cercando di installare un'app che ha librerie native e non ha una libreria nativa per la tua architettura cpu. Ad esempio, se hai compilato un'app per armv7 e stai provando a installarla su un emulatore che utilizza l' architettura Intel invece non funzionerà.


1
@DanielOchoa È perché non vogliono mantenere due immagini per una versione di anteprima. Quando L viene lanciato ufficialmente, sono sicuro che ci sarà anche un'immagine Intel x86.
Hiemanshu Sharma,

1
Come superare questo problema. sto usando Genymotion Emulater e installo gapps e Genymotion-ARM-Translation_v1.1 sto ancora riscontrando questo problema.
Prashant Maheshwari Andro,

3
Se hai questo problema su Genymotion anche quando usi il traduttore ARM, è perché stai creando un dispositivo virtuale x86 come Google Nexus 10. Scegli invece un dispositivo virtuale ARM, come uno dei tablet personalizzati.
enl8enmentnow

1
Qualche idea sul perché questo non funzionerà su un Nexus 9 con 5.1.1. Funziona bene su un tablet Sony Xperia Z2 con 4.4.2. Compilato Sdk 21, minimo 17 e mirato 22.
Orso

3
Ho riscontrato questo problema durante l'utilizzo dell'emulatore Android Studio per un Nexus 5x sul mio computer Windows. Per motivi di velocità [10 volte più veloce] il valore predefinito è la simulazione del telefono come se funzionasse con un'architettura Intel x86 [Lo Snapdragon 808 del Nexus 5x è in realtà basato su ARM: tomshardware.com/reviews/lg-g4,4353-2.html ] . Ho corretto l'errore entrando nel gestore AVD, selezionando il dispositivo simulato che mi stava dando l'errore e facendo clic sul pulsante Modifica in cui ho impostato un'architettura ARM (armeabi-v7a). Dopo questa modifica più il riavvio dell'emulatore, l'installazione è stata eseguita senza problemi
Antonino,

150

INSTALL_FAILED_NO_MATCHING_ABIS è quando stai cercando di installare un'app che ha librerie native e non ha una libreria nativa per la tua architettura cpu. Ad esempio, se hai compilato un'app per armv7 e stai provando a installarla su un emulatore che utilizza l'architettura Intel invece non funzionerà.

Uso di Xamarin su Visual Studio 2015. Risolvi questo problema:

  1. Apri il tuo xamarin .sln
  2. Fai clic con il tasto destro del mouse sul tuo progetto Android
  3. Fai clic su Proprietà
  4. Fai clic su Opzioni Android
  5. Fai clic sulla scheda "Avanzate"
  6. In "Architetture supportate", verifica quanto segue:

    1. armeabi-V7A
    2. X 86
  7. Salva

  8. F5 (build)

Modifica: è stato segnalato che questa soluzione funziona anche su Visual Studio 2017 .

Modifica 2: è stato segnalato che questa soluzione funziona anche su Visual Studio 2017 per Mac .


6
Quella soluzione ha funzionato anche su Visual Studio 2017, per un progetto Xamarin.Android.
corentinaltepe,

1
Questo ha funzionato anche per me quando si utilizza un progetto di app WebView per Android
JRodd

4
Sembra su Xamarin, ogni nuovo giorno c'è un nuovo, imprevisto ostacolo che mi impedisce di eseguire la mia applicazione (che ha funzionato ieri). Dato che il mio file csproj è su dropbox, ho potuto controllare la cronologia delle versioni e ieri questa proprietà non era nel file, mancava del tutto. Oggi, ho dovuto aggiungere l'opzione x86 per far funzionare l'app. Perché mai Xamarin o Android utilizzano improvvisamente valori predefiniti diversi? Questo è così frustrante! Comunque, grazie a persone come te, posso superare e andare avanti con il lavoro. Grazie mille e +1 per te!
TMan

2
Vorrei poter votare più di una volta ... Testato e funzionante su VS 2017 per Mac.
JordiVilaplana,

Per Visual Studio Community 2019 per Mac: 1. Fai clic con il pulsante destro del mouse sul tuo progetto Android 2. Fai clic su Opzioni 3. Fai clic su Android Build 4. Avanzato
null

87

Sto postando una risposta da un'altra discussione perché è ciò che ha funzionato bene per me, il trucco è aggiungere il supporto per entrambe le architetture:

Pubblicando questo perché non sono riuscito a trovare una risposta diretta e ho dovuto guardare un paio di post diversi per ottenere ciò che volevo fare ...

Sono stato in grado di utilizzare l'emulatore x86 Accelerated (HAXM) semplicemente aggiungendo questo allo script build.gradle del mio modulo all'interno del blocco android {}:

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

Esegui (build) ... Ora ci sarà un (yourapp) -x86-debug.apk nella cartella di output. Sono sicuro che c'è un modo per automatizzare l'installazione su Run, ma ho appena avviato il mio emulatore HAXM preferito e utilizzo la riga di comando:

adb install (yourapp)-x86-debug.apk

2
Errore [INSTALL_FAILED_NO_MATCHING_ABIS]
abbasalim

Non ha funzionato per me e non è stato possibile trovare il (yourapp)-x86-debug.apkfile nell'output del mio progetto.
Eido95,

Non voglio necessariamente dividere gli APK, è un'opzione? @DrissBounouar
ericn,

Puoi usare l'apk universale, presumibilmente ha entrambe le architetture.
Driss Bounouar, il

ancora affrontando lo stesso problema
Vikash Parajuli,


37

Questo è davvero uno strano errore che può essere causato dal multidex della tua app. Per aggirare il problema, usa il seguente blocco nel file build.gradle della tua app :

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

1
Ciao. Questo ha reso il mio progetto realizzato con successo, ma mi ha comunque dato lo stesso errore. Sto lavorando su Mac, genymotion. Inoltre, in generale, queste impostazioni che hai detto sono solo per la versione di debug o anche per la versione di rilascio?
myDoggyWritesCode

@ user3241111 Può essere utilizzato sia per il debug che per il prod. Hai provato a pulire il tuo progetto. O forse invalidare / riavviare Android Studio?
IgorGanapolsky,

1
@ user3241111 Se si utilizza gradlew per build di terminali da riga di comando, è comunque possibile pulire il progetto con gradle.
IgorGanapolsky,

1
Ho provato questa soluzione, ha funzionato .. Nel mio progetto non c'era APP_ABI. Ma l'ho aggiunto di conseguenza e crea solo un apk e funziona. stackoverflow.com/a/35565901/3241111
myDoggyWritesCode

1
Inoltre, ho appena aggiunto il demone Gradle abilitato e ha ottimizzato il processo così tanto ... Comunque, grazie per il vostro supporto :)
myDoggyWritesCode

11

So che c'erano molte risposte qui, ma la versione TL; DR è questa (se stai usando Xamarin Studio):

  1. Fare clic con il tasto destro del mouse sul progetto Android nella struttura della soluzione
  2. Selezionare Options
  3. Vai a Android Build
  4. Vai a Advanced scheda
  5. Controlla le architetture che usi nell'emulatore (probabilmente x86/ armeabi-v7a/armeabi )
  6. Crea un'app kickass :)

11

Questa soluzione ha funzionato per me. Prova questo, aggiungi le seguenti righe nel file build.gradle della tua app

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

11

Su Android 8:

apache.commons.io:2.4

dà INSTALL_FAILED_NO_MATCHING_ABIS, prova a cambiarlo in 2.5 o 2.6 e funzionerà o lo commenterà.


6
Grazie mille, mi hai salvato la giornata. Non so perché ho ottenuto: implementazione 'org.apache.directory.studio:org.apache.commons.io:2.4'
Pierrick HYMBERT

7

Il commento di @ enl8enmentnow dovrebbe essere una risposta per risolvere il problema usando genymotion:

Se hai questo problema su Genymotion anche quando usi il traduttore ARM, è perché stai creando un dispositivo virtuale x86 come Google Nexus 10. Scegli invece un dispositivo virtuale ARM, come uno dei tablet personalizzati.


1
Sto lavorando su Mac e probabilmente è costruito per dispositivi virtuali x86. Ho provato anche con il tablet personalizzato genymotion, non ha funzionato e ho dato lo stesso errore durante l'installazione
myDoggyWritesCode

7

questo ha funzionato per me ... Android> Gradle Scripts> build.gradle (Modulo: app) aggiungi all'interno di android *

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

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

inserisci qui la descrizione dell'immagine


6

Visual Studio mac: è possibile modificare il supporto qui:

inserisci qui la descrizione dell'immagine


6

ho avuto questo problema usando la libreria bitcoinJ (org.bitcoinj: bitcoinj-core: 0.14.7) aggiunta a build.gradle (nell'app del modulo) opzioni di packaging all'interno dell'ambito Android. mi ha aiutato.

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

Grazie. Mi ha aiutato con l'integrazione Bitcoin J.
Umer Kiani,

Grazie mille sto provando molte soluzioni ma questa soluzione funziona per me Il mio problema è per scrypt-1.4.0.jar non installato in Android Pie versione (Nokia 7.1) Dispositivo
Sagar Pithiya

3

Nel mio caso, in un progetto xamarin, in Visual Studio errore rimosso selezionando proprietà -> Opzioni Android e selezionare Usa condividi tempi di esecuzione e Usa distribuzione rapida, in alcuni casi uno di essi inserisci qui la descrizione dell'immagine



2

Nell'edizione 2017 di Visual Studio Community, a volte la selezione di ABI supportate da Opzioni Android non funzionerà.

In tal caso, verificare che .csproj abbia la seguente riga e nessuna riga duplicata nelle stesse configurazioni di build.

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

Per modificare,

  1. Scarica il tuo progetto Android
  2. Fare clic con il tasto destro e selezionare Modifica progetto ...
  3. Assicurati di avere la riga sopra solo una volta in una configurazione di build
  4. Salva
  5. Fai clic destro sul tuo progetto Android e Ricarica

1

Fondamentalmente se hai provato tutto quanto sopra e hai ancora lo stesso errore "Perché sto affrontando questo problema anche prima" quindi controlla quale .jar o .aar o modulo che hai aggiunto potrebbe essere l'unica libreria che utilizza ndk e che non supporta 8.0 + .

Quindi, per favore, controlla la libreria che stai usando e cercala se ne hai avutamente bisogno.


1

Ho riscontrato questo problema quando mi sono trasferito da Android 7 (Nougat) ad Android 8 (Oreo).

Ho provato diversi modi sopra elencati e con mia sfortuna niente ha funzionato.

Quindi ho cambiato il file .apk in .zip file estratto e ho trovato la cartella lib con cui era presente questo file /x86_64/darwin/libscrypt.dylib, quindi per rimuovere questo ho aggiunto un codice nel mio modulo build.gradle sotto la sezione Android (cioè )

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

Problema di acclamazioni risolto


1

In generale, per scoprire quale dipendenza della libreria ha un ABI incompatibile,

  • compilare un file APK in Android Studio (menu Genera> Genera bundle / APK> Genera APK) // attuale il 01.04.2020
  • rinominare il file APK, sostituendo l'estensione "apk" con l'estensione "zip"
  • decomprimere il file zip in una nuova cartella
  • vai alla cartella libs
  • scopri quali sono le librerie * .jar con ABI incompatibili

Puoi provare ad aggiornare la versione / rimuovere / sostituire queste librerie per risolvere INSTALL_FAILED_NO_MATCHING_ABIS quando installa il problema apk


0

Questo mi è successo. Ho controllato SDK Manager e mi ha detto che quello che stavo usando aveva un aggiornamento. L'ho aggiornato e il problema è andato via.


0

Abbastanza tardi, ma mi sono appena imbattuto in questo. Questo è per Xamarin.Android. Assicurati di non provare a eseguire il debug in modalità di rilascio. Ottengo lo stesso errore esatto se in modalità di rilascio e tentando di eseguire il debug. Il semplice passaggio dalla versione al debug ha permesso al mio di installarsi correttamente.


0

Nel mio caso, dovevo scaricare la versione x86 dell'applicazione.

  1. Vai a https://www.apkmirror.com/
  2. Cerca l'app
  3. Seleziona il primo nell'elenco
  4. Guarda nella parte superiore della pagina, dove è presente [Nome azienda]> [Nome applicazione]> [Numero versione]
  5. Fai clic sul nome dell'applicazione
  6. Fai clic su "Tutte le varianti"
  7. L'elenco dovrebbe contenere una variante x86 da scaricare

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.