Qual è il motivo dell'errore "Il dispositivo supporta x86, ma l'APK supporta solo armeabi-v7a"


90

Sto giocando con Android Studio testando alcuni progetti da GitHub e quando provo a emulare l'apk, non mi consente di scegliere un emulatore.

Mi dice:

Il dispositivo supporta x86, ma APK supporta solo armeabi-v7a

Perché fa questo?


Che AVD hai usato? Quale immagine di sistema? Quale progetto GitHub?
OneCricketeer

In altre parole, le immagini Intel x86 non eseguiranno il codice ARM.
OneCricketeer


Volevo usare un Nexus 10 con Android 5.1
Alexander Ibarra

Ok, e hai usato l'immagine di sistema ARM eabi v7 o un'immagine Intel Atom x86? Controlla il tuo gestore SDK cosa hai installato.
OneCricketeer

Risposte:


85

Ho avuto lo stesso problema, ho controllato il build.gradle da module: app . Si scopre che esiste una tale configurazione:

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

quando ho commentato tutto, tutto ha funzionato bene.

Stavo cercando di occuparmi del progetto React Native Android .


1
Penso che intendessi build.gradle;)
Ryan James

2
Ho avuto lo stesso problema e per me "x86" mancava solo lì
thomas

1
Questo ha funzionato per me, tuttavia tutto ciò che dovevo fare era consentire il debug sul mio dispositivo effettivo e avrei potuto rimuovere nuovamente il commento da questa riga.
Boomer Rogers

Quale sezione dovrei mettere ndk?
Ömrüm Çetin

Non ha funzionato per me in java / kotlin, si costruisce ma l'app si arresta in modo anomalo.
mozilla_firefox

77

Disattiva il debug USB e riaccendilo sul dispositivo hardware.


10
Normalmente questi commenti li avrei sottovalutati, ma in realtà funziona!
Ahmed Hegazy

2
Funziona perché il Allow computer to connect to this deviceprompt non è stato visualizzato la prima volta, ma la seconda.
Kyle Clegg

Ha funzionato su un computer su cui avevo segnato "Ricorda per questo computer" quando ho iniziato un nuovo progetto da GitHub.
Z. Bagley

Così. Dopo aver aggiunto la nuova architettura dei processori al filtro ABI, lo studio ha smesso di riconoscere il dispositivo. Questo suggerimento mi ha aiutato a risolvere il problema. !!
Vetalll

Per me questo sta accadendo in Emulator
Akhil Surapuram

41

In Android Studio, seleziona il menu Build ,

inserisci qui la descrizione dell'immagine

quindi fare clic su Select Build Variant ... e nella finestra 'Build Variants' selezionare x86Debug (o release)

inserisci qui la descrizione dell'immagine

PS: sto usando Android Studio 2.3 su Mac


Ha funzionato perfettamente: la mia configurazione gradle ha definito sia build ARM che x86, ma ho dovuto istruire Android Studio a creare la variante x86 anziché la variante ARM (probabilmente per iOS). Grazie!
jevon

Nota che devi avere il progetto selezionato, altrimenti l'opzione per farlo sarà disattivata. Penso che ci siano anche altre condizioni che possono disattivarlo: potrebbe essere necessario pulire e ricostruire.
Dronz

16

Su Linux: File> Invalida cache / Riavvia Sul telefono: carica invece la modifica del dispositivo in Trasferisci foto (PTP)


1
Nessuna delle risposte precedenti funzionava. Questo ha funzionato. Molte grazie.
thedarkpassenger

Sono passato da Camera (PTP)a Media Device (MTP)e funziona anche. Grazie!
Konayuki

11

Ho avuto il problema simile e l'ho risolto aggiungendo il valore "x86" all'elenco "abiFilters" come di seguito -

[Apri il file build.gradle (Module: app)] e cerca " ndk " in deafultSection e aggiungi "x86"!

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

Spero che sia d'aiuto!!!


1
Probabilmente dovresti abbandonare armeabise scegli come target l'SDK 19 e versioni successive. Android stesso non lo supporta a partire dalla 4.4
mradzinski

9

Nel mio caso di macchina Linux ha adb devicesmostrato

List of devices attached 
44b194f5    no permissions

Quindi riavviato il server adb

sudo adb kill-server

e poi

sudo adb start-server

quindi collega il dispositivo, attiva il debug e digita

adb devices
List of devices attached 
44b194f5    device

Finalmente è stato in grado di funzionare sul dispositivo


7

Nel mio caso la mia app utilizza alcune librerie native. Ogni piattaforma richiede la creazione delle librerie corrispondenti.

Quindi la libreria nativa della piattaforma x86 (o qualsiasi altra) non viene generata, devi aggiungere un abifilter da qualche parte:

Esistono diversi punti in cui è possibile specificare i filtri abi:

  • Application.mk aggiungi la piattaforma che ti serve in questo modo:

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

    trova abiFilters e aggiungi la piattaforma di cui hai bisogno in questo modo:

    abiFilters   "armeabi","armeabi-v7a","x86"
    


6

Il dispositivo supporta x86, ma APK supporta solo armeabi-v7a)

Sembra che tu abbia usato x86un'immagine nell'emulatore.

Creane uno separato. Scegli la scheda "altre immagini" per trovare i dispositivi di attivazione, se necessario.

Oppure, esegui su un dispositivo reale. Il repository che hai elencato è pensato per funzionare su un Raspberry Pi 3 / ODroid, credo.


6

Può confermare, l'attivazione / disattivazione del debug USB nelle Opzioni sviluppatore ha risolto il problema. Forse anche annullare la finestra "Seleziona destinazione di distribuzione" in Android Studio e provare a eseguire nuovamente l'app dopo aver attivato il debug USB.


5

Per me ha funzionato cambiando l'opzione del cavo da

-> Charge Only. 

Per

-> Transfer file.

4

Vai al dispositivo Settings >> Developer Options >> Restore Default Settingse abilitaUSB debugging


3

Il codice seguente ha funzionato per me:

ndk {
     abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}

2

Sul mio dispositivo fisico, ho iniziato a ricevere questo. La soluzione era accedere alle Impostazioni sviluppatore e disattivare e attivare il debug USB.


2

Se usi Ubuntu:

  1. assicurati che il debug USB sia attivo
  2. controlla la connessione via cavo
  3. sulla barra delle notifiche controlla la notifica del sistema Android e toccala per modificare lo stato di carica in trasferimento file
  4. ora vai al terminale e digita: adb devices dopo aver eseguito questo comando adb restart e il tuo dispositivo viene mostrato nell'elenco


0

Prova il tuo codice sul telefono reale. Se hai ancora lo stesso problema, importa di nuovo il tuo codice e prima di questo dovresti aggiornare il tuo SDK e creare un nuovo emulatore con l'immagine del sistema ARM.


0

Molte volte questo significa che non hai concesso al tuo laptop / computer l'accesso al tuo dispositivo. Dai un'occhiata al tuo dispositivo e fai clic sul pulsante "Consenti accesso" oltre alle autorizzazioni di debug.


0

L'esecuzione di un AVD utilizzando il processore x86 è 10 volte più veloce rispetto all'utilizzo dell'emulatore ARM, ma la maggior parte delle volte si sta compilando solo l'APK per ARM. Per avere un'emulazione più veloce usando un AVD x86 ho dovuto fare quanto segue (per un progetto 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})
            }
        }
    }
    

0

Il riavvio del dispositivo ha risolto il problema per me (React-native)


0

A me è successo dopo aver aggiornato Android Studio. Nel mio caso, è successo a causa dell'impostazione di build non configurata automaticamente in x86Debug-x86. Basta cambiarlo aprendo Build >> Seleziona Build Variant >> Cambia l'opzione build variant da armeabi-v7a a x86Debug-x86 o qualsiasi cosa ti serva nell'emulatore.


0

Prova ad abilitare Origini sconosciute dalle Opzioni di sicurezza. Ha funzionato per me.


0

lo vedo

Se stai usando CMake per le tue build, controlla il file \ proj.android \ gradle.properties e aggiorna PROP_APP_ABI per includere le build per x86, o in alternativa, puoi semplicemente usare armeabi-v7a o arm64-v8a Android immagini.

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

Se non stai utilizzando cmake, cerca in \ proj.android \ app \ jni \ Application.mk nel caso in cui sia necessario modificare l'impostazione ABI lì.


Benvenuto in StackOverflow, aggiungi qualche altra descrizione e codice se è necessario per comprendere la risposta perché risolverà il problema di qualcuno il prima possibile.
Nensi Kasundra
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.