Errore [INSTALL_FAILED_INVALID_APK]


86

Quando faccio clic per eseguire un progetto che ho appena creato in Android Studio 0.2.10 e seleziono il mio Android (connesso tramite USB con debug tramite USB attivato) ottengo questo errore:

Waiting for device.
Target device: 0123456789ABCDEF
Uploading file
    local path: /Users/Rui/AndroidStudioProjects/FirstAppProject/FirstApp/build/apk/FirstApp-debug-unaligned.apk
    remote path: /data/local/tmp/rui.firstapp
Installing rui.firstapp
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/rui.firstapp"
pkg: /data/local/tmp/rui.firstapp
Failure [INSTALL_FAILED_INVALID_APK]

Qualche idea di cosa potrebbe essere?


Seleziona il mio telefono ... !! Volevi dire emulator ... ??
Gokul Nath KP

1
No, il mio Android con debug tramite USB acceso.
RuiG

Ti sei accertato che l'app sia compatibile con il dispositivo che stai utilizzando? Controlla i valori MinSDKe TargetSDKnel file manifest. Hai provato a installarlo in un emulatore? Questo restringerà se il problema è con l'APK o il tuo dispositivo.
free3dom

Risposte:


156

Lo stavo ottenendo in Android Studio e tutto quello che ho fatto per risolverlo è stato andare a "Build" > "Clean Project"e ha funzionato.


8
Se continua a non funzionare, Build -> Rebuild Project after Clean Project funzionerebbe.
Pei

L'ho appena ricevuto con un aggiornamento da gradle 5.4.1 a 5.6.1 - non sono sicuro di quale stranezza lo abbia causato, ma gli aggiornamenti di grandi dimensioni possono certamente. Una soluzione alternativa della riga di comando è ./gradlew cleanseguita dal normale comando di compilazione
Mike Hardy

23

Basta rimuovere il vecchio APK android / app / build / output / apk / debug / app-debug.apk nella cartella. È tutto. goditi la tua codifica ...


Benvenuto @VenkateshMogili
mahendren

1
rm -fr android/app/build/outputs/apk/debug/
felansu

15

Ho avuto un problema simile una volta, quello che ho osservato è stato, il nome del pacchetto nel mio Androidmanifest.xml è stato avviato con un carattere di spazio vuoto. like " com.example.test" instead of "com.example.test"

Ho rimosso tutti questi spazi non validi dal mio file manifest, ha risolto il mio problema

Modifica 1 : "-" nel nome del pacchetto causa lo stesso problema su alcune versioni di Android


1
Wow! Ho pensato che invalidate cache and restartavrebbe costretto una build pulita, a quanto pare no.
GabrielOshiro

10

Ho avuto lo stesso problema ma nessuna delle soluzioni ha funzionato per me. Il problema era che non avevo . separatori nel nome del mio pacchetto.
cioè se il nome del tuo pacchetto è my.packagename va bene ma non può essere solo mypackagename
Ho ricevuto il suggerimento da questo bug report.

https://code.google.com/p/android/issues/detail?id=55841


9

Se qualcuno ha ancora problemi, quindi Build-> Clean Project, Build-> Rebuild project, infine, Sync project with Gradle file .


8

Come risolvere questo problema:

  1. Installare RootExplorer
  2. Crea una nuova tmpcartella sulla scheda SD
  3. Premi a lungo sulla cartella tmp e seleziona Linkquesta cartella (ultima opzione nel menu)
  4. Vai a /data/local/e tocca il pulsante CREATE LINKdal basso

8

Ho avuto questo problema e nessuna delle soluzioni di cui sopra ha funzionato per me.

Per qualche motivo, i permessi non erano impostati correttamente sulla mia /data/local/tmpdirectory (solo root aveva rwx). Ho risolto il problema utilizzando ADB (avrai bisogno di un dispositivo rooted):

  1. Collega il telefono tramite USB
  2. Avvia ADB usando adb shell
  3. Passa /data/localall'utilizzocd /data/local
  4. Passa alla modalità root usando su
  5. Consenti lettura / scrittura / esecuzione su tmpdirectory utilizzandochmod 777 tmp
  6. Disconnetti, riavvia Android Studio e ricollega il dispositivo

7

Disattivando Instant Run ho risolto il mio problema. Non conosco nessuna spiegazione fino ad ora. Dopo la migrazione ad Android Studio 3.0, inizia un problema come questo. Spero che questo aiuti qualcuno in futuro.


6

Quando ho riscontrato questo problema, ciò che mi ha risolto è stato assicurarmi che il nome del pacchetto AndroidManifest.xml fosse lo stesso di build.grade applicationId.


3

Ho trovato un altro motivo di questo errore. Se hai effettuato il root del tuo dispositivo, le autorizzazioni di accesso a / data / local / tmp potrebbero essere modificate, quindi adb non può accedere al file temporaneo. La soluzione è creare la cartella "tmp" su sdcard e creare un collegamento simbolico ad essa in / data / local / (tramite shell ADB o Root Explorer).


Non potevo crederci: controllo incrociato con un altro dispositivo (tutti i permessi sembravano identici, fino al livello di root); armeggiare con i permessi (li ha resi pari a 777) - assolutamente no. Quindi cosa perdere. Ho provato il collegamento simbolico - wow! Opere (+1). Mi piacerebbe ancora sapere perché e cosa c'è dietro. Non è stato il rooting a causarlo nel mio caso, ma l'esecuzione del demone ADB in "modalità non sicura" (cioè con permessi di root).
Izzy

3

Se scrivi android:extractNativeLibs="false"nel file AndroidManifest. quindi cambiarlo inandroid:extractNativeLibs="true"


3

Ho provato la maggior parte delle soluzioni offerte sopra (quelle semplici, non quelle che offrono chmod e alterano le librerie interne) e nessuna di esse funziona

Alla fine quello che ha funzionato per me è stato: "Clean Project" -> "Rebuild Project" -> ha cambiato il nome della versione dell'app nel modulo dell'app build.gradle -> Sync Gradle -> Esegui l'app sul dispositivo


Questo metodo ha funzionato per me !! Grazie mille, ho lottato con questo per molto tempo, questo è davvero un salvavita! Non posso ringraziarti abbastanza
stb_dev

3

Navigare verso Run/Debug Configurations

Fare clic su Esegui dalla scheda in alto> Modifica configurazioni

  • Modulo: seleziona la tua app
  • Opzioni di installazione: distribuisci APK predefinito
  • Ok

inserisci qui la descrizione dell'immagine


2

Questo ha aiutato nel mio caso:

Settings -> Apps -> Google Play Store -> Click "Enable" button.

Wow. Grazie. Ho disabilitato GooglePlay e non ho notato che questa era la causa principale dei miei problemi.
W0rmH0le

2

Mi sono imbattuto in questo problema avendo varianti di build non corrispondenti. Un modulo di consegna dinamica era nella variante di debug mentre i moduli rimanenti erano in rilascio. La semplice modifica del modulo Dynamic Delivery per rilasciare, ricostruire e installare, ha risolto il problema.


2

Per i progetti Flutter, con l'editor di VS Code, vai alla cartella di origine del progetto, elimina la cartella "build" e avvia il debug.


2

Ho riscontrato questo problema su un progetto con Dagger e più moduli. Quello che ha funzionato per me (nessuno dei precedenti ha funzionato) era 1) svuotare la cartella .gradle 2) svuotare la cartella .idea 3) Nel progetto gradle.properties, contrassegnare org.gradle.caching = false 4) Possibilmente invalidare le cache in AS , pulire, ricostruire

Potresti riuscire a farla franca solo con # 3, pulire e poi costruire.

EDIT: Ultimamente sono stato in grado di aggirare questo problema riavviando AS, quindi eseguendo una pulizia, quindi installando di nuovo.


stranamente. ho provato alcuni sopra. questo ha funzionato per me Questo sviluppo Android sta impazzendo. codice per 30 secondi e attendere 5 minuti per ottenere la build
satyajit

@satyajit. 5 minuti!! il mio ne prende 10! Questo è l'unico che funziona costantemente per me.
Dan Anderson

Sono in grado di farlo funzionare ./gradlew installDebugdalla riga di comando
satyajit

2

La causa di questo problema per me era aver selezionato la variante di build sbagliata per uno dei moduli della mia app. Dallo strumento "Crea varianti", ho selezionato la variante del modulo che corrispondeva al modulo dell'app e ha risolto il problema per me.


1

Ho avuto questo problema su Android Studio perché nella mia build di debug ho aggiunto il suffisso del nome della versione -DEBUG e il - era il problema.

Prova a inserire solo lettere, numeri e punti sui nomi delle versioni e sugli ID delle applicazioni


0

Ho appena avuto lo stesso errore. Avevo l'anno 2015 nell'ID app. Ho sostituito il 2015 con quindici e questo ha risolto il problema.

Inoltre, se utilizzi Android Studio, puoi provare: Strumenti / Android / Sincronizza il progetto con i file Gradle


0

Forza Arresta l'applicazione nelle impostazioni del dispositivo.


0

Ho avuto questo problema e nessuna delle soluzioni di cui sopra ha funzionato per me.

Il motivo è probabilmente la versione root del telefono che ha la quota disponibile o le autorizzazioni per l'installazione dell'apk solo sulla scheda SD.

Ho risolto il problema utilizzando ADB (avrai bisogno di un dispositivo rooted):

  1. Collega il telefono tramite USB
  2. Avvia ADB utilizzando adb shell
  3. Passa alla modalità root usando su
  4. crea la cartella tmp nella sdcard: mkdir / sdcard / tmp
  5. cd / dati / locale
  6. crea link alla cartella nella sdcard: ln -s / sdcard / tmp tmp

0

Sembra che ci siano più ragioni per questo fallimento. Per me, il problema era che nel file AndroidManifest avevo fatto riferimento a una libreria non esistente (solo in questo particolare dispositivo) utilizzando il tag "uses-library". Dopo aver rimosso la libreria in cui questo dispositivo non aveva l'apk, è stato installato correttamente.


0

Ho usato l'archetipo di androidquickstart maven e ho affrontato lo stesso problema:

Il nome del mio pacchetto era un solo Androidquickstart. Secondo i consigli precedenti

  1. Ho cambiato il pacchetto in androidquickstart.test
  2. poi in AndroidManifest.xml ho cambiato package="androidquickstart"per package="androidquickstart.test"e corrispondentemente rimosso prova da altre parti XML <activity android:name=".test.HelloAndroidActivity" >per<activity android:name=".HelloAndroidActivity" >
  3. e anche risolti problemi di pacchetto nei file java (evidenziati dall'IDE)

0

Il nome del tuo pacchetto dovrebbe includere parole combinate da punti come com.example o prashant.mydairy ..... dovrebbe funzionare bene ora

i file in cui è necessario aggiornare il nome del pacchetto sono i seguenti: 1) File manifest 2) File Gradle (modulo appp): applicationId "package.name"


1
dovrebbe essere un commento
Furqan

0

taskIl nome dell'affinità deve contenere almeno un '.' separatore


0

Se hai accesso alla console del dispositivo (shell adb), modifica le autorizzazioni di quanto segue:

  1. chmod 777 / data /
  2. chmod 777 / data / local /
    Potresti anche voler provare a copiare l'apk /data/local/nel qual caso, assicurati di impostare anche le autorizzazioni corrette per l'apk .
  3. chmod 777 /data/local/myapk.apk Ora puoi tentare un'installazione con: pm install -r -d /data/local/myapk.apk (nota il percorso assoluto)

0

Sembra che il colpevole sia stato un numero dopo il punto .

Ho avuto lo stesso problema con il seguente applicationId

org.tony.stark.125jarvis

Cambiandolo in

org.tony.stark.jarvis

Sono stato in grado di installare l'app sui dispositivi Android.


0

È possibile ottenere questo errore se l' minSdkVersionin builde.gradleè più grande di versione Android del dispositivo. In tal caso devi modificare il file minSdkVersion.


0

elimina il codice in AndroidManifest.xml:

tools: replace = "android: appComponentFactory" android: appComponentFactory = ""

Funziona.

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.