Fehler [INSTALL_FAILED_INVALID_APK]

85

Wenn ich auf ein Projekt klicke, das ich gerade in Android Studio 0.2.10 erstellt habe, und mein Android auswähle (über USB verbunden mit Debug über USB), wird folgende Fehlermeldung angezeigt:

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]

Irgendeine Idee, was es sein könnte?

RuiG
quelle
Wähle mein Handy aus ... !! Meinten Sie Emulator ... ??
Gokul Nath KP
1
Nein, mein Android mit Debugging über USB an.
RuiG
Haben Sie sichergestellt, dass die App mit dem von Ihnen verwendeten Gerät kompatibel ist? Überprüfen Sie die MinSDKund TargetSDK-Werte in Ihrem Manifest. Haben Sie versucht, dies in einem Emulator zu installieren? Dadurch wird eingegrenzt, ob das Problem bei der APK oder Ihrem Gerät liegt.
free3dom

Antworten:

153

Ich habe das in Android Studio bekommen und alles, was ich getan habe, um es zu reparieren, war zu gehen "Build" > "Clean Project"und es hat einfach funktioniert.

Francois Dermu
quelle
8
Wenn es immer noch nicht funktioniert, funktioniert Build -> Projekt neu erstellen, nachdem Clean Project funktioniert hat.
Pei
Ich habe dies gerade mit einem Update von Gradle 5.4.1 auf 5.6.1 erhalten - nicht sicher, welche Fremdartigkeit es verursacht hat, aber große Gradle-Upgrades können es sicherlich. Eine alternative Befehlszeilenlösung wird ./gradlew cleanvon Ihrem normalen Build-Befehl gefolgt
Mike Hardy
18

Entfernen Sie einfach das alte APK android / app / build / output / apk / debug / app-debug.apk aus dem Ordner. das ist alles. Viel Spaß beim Codieren ...

Mahendren
quelle
Willkommen @VenkateshMogili
Mahendren
1
rm -fr android/app/build/outputs/apk/debug/
Felansu
15

Ich habe einmal ein ähnliches Problem bekommen. Ich habe festgestellt, dass der Paketname in meiner Androidmanifest.xml mit einem Leerzeichen gestartet wurde. like " com.example.test" instead of "com.example.test"

Ich habe alle diese ungültigen Leerzeichen aus meiner Manifestdatei entfernt, es hat mein Problem gelöst

Bearbeiten 1 : '-' im Paketnamen verursachen auch das gleiche Problem auf einigen Android-Versionen

Akhil
quelle
1
Beeindruckend! Ich dachte, ich invalidate cache and restartwürde einen sauberen Build erzwingen, anscheinend nicht.
GabrielOshiro
10

Ich hatte das gleiche Problem, aber keine der Lösungen funktionierte für mich. Das Problem war, dass ich keine hatte . Trennzeichen in meinem Paketnamen.
dh wenn Ihr Paketname my.packagename ist , ist es in Ordnung, aber es kann nicht nur mypackagename sein. Ich
habe den Hinweis aus diesem Fehlerbericht erhalten.

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

Hadi
quelle
9

Wenn immer noch ein Problem auftritt , dann Build-> Clean Project, dann Build-> Rebuild Project. Projekt schließlich mit Gradle-Datei synchronisieren .

Sandeep PC
quelle
8

So lösen Sie dieses Problem:

  1. Installieren RootExplorer
  2. Erstellen Sie einen neuen tmpOrdner auf der SD-Karte
  3. Drücken Sie lange auf den tmp-Ordner und wählen Sie Linkdiesen Ordner aus (letzte Option im Menü).
  4. Gehen Sie zu /data/local/und tippen Sie auf die Schaltfläche CREATE LINKvon unten
Liviu
quelle
8

Ich hatte dieses Problem und keine der oben genannten Lösungen funktionierte für mich.

Aus irgendeinem Grund waren die Berechtigungen in meinem /data/local/tmpVerzeichnis nicht richtig eingestellt (nur root hatte rwx). Ich habe das Problem mit ADB behoben (Sie benötigen ein gerootetes Gerät):

  1. Schließen Sie Ihr Telefon über USB an
  2. Starten Sie ADB mit adb shell
  3. Gehen Sie zur /data/localVerwendung übercd /data/local
  4. Wechseln Sie mit in den Root-Modus su
  5. Lesen / Schreiben / Ausführen im tmpVerzeichnis mit zulassenchmod 777 tmp
  6. Trennen Sie Android Studio, starten Sie es neu und schließen Sie das Gerät erneut an
infl3x
quelle
7

Durch Ausschalten des Sofortlaufs wurde mein Problem gelöst. Ich kenne bis jetzt keine Erklärung. Nach der Migration auf Android Studio 3.0 beginnt das Problem wie folgt. Hoffe das hilft jemandem in Zukunft.

bluetoothfx
quelle
6

Als dieses Problem auftrat, stellte ich sicher, dass der Paketname AndroidManifest.xml mit der Anwendungs-ID build.grade identisch war.

Anonsage
quelle
3

Ich habe einen anderen Grund für diesen Fehler gefunden. Wenn Sie die Gerätezugriffsberechtigungen für / data / local / tmp gerootet haben, werden diese möglicherweise geändert, sodass adb keinen Zugriff auf die temporäre Datei erhält. Die Lösung besteht darin, den Ordner "tmp" auf der SD-Karte zu erstellen und in / data / local / einen Symlink dazu zu erstellen (über die ADB-Shell oder den Root-Explorer).

0neel
quelle
Ich konnte das nicht glauben: mit einem anderen Gerät abgeglichen (alle Berechtigungen schienen bis zur Root-Ebene identisch zu sein); spielte mit den Berechtigungen (machte sie sogar 777) - auf keinen Fall. Also, was zu verlieren. Versuchte den Symlink - wow! Funktioniert (+1). Ich würde immer noch gerne wissen warum und was dahinter steckt. In meinem Fall wurde es nicht durch Rooting verursacht, sondern der ADB-Daemon wurde im "unsicheren Modus" (dh mit Root-Berechtigungen) ausgeführt.
Izzy
3

Wenn Sie android:extractNativeLibs="false"in eine AndroidManifest-Datei schreiben . dann ändern Sie es inandroid:extractNativeLibs="true"

Ankita Shah
quelle
2

Dies hat in meinem Fall geholfen:

Settings -> Apps -> Google Play Store -> Click "Enable" button.
sqr163
quelle
Beeindruckend. Vielen Dank. Ich habe GooglePlay deaktiviert und nicht bemerkt, dass dies die Hauptursache für meine Probleme ist.
W0rmH0le
2

Ich habe die meisten der oben angebotenen Lösungen ausprobiert (die einfachen, nicht die, die chmod anbieten und interne Bibliotheken ändern), und keine davon funktioniert

Schließlich funktionierte für mich Folgendes: "Projekt bereinigen" -> "Projekt neu erstellen" -> App-Versionsname im App-Modul build.gradle geändert -> Gradle synchronisieren -> App auf dem Gerät ausführen

HMan
quelle
2

Ich bin auf dieses Problem gestoßen, weil ich nicht übereinstimmende Build-Varianten hatte. Ein Dynamic Delivery-Modul befand sich in der Debug-Variante, während die restlichen Module freigegeben waren. Durch einfaches Ändern des Dynamic Delivery-Moduls in "Release", "Neuaufbau" und "Installation" wurde das Problem behoben.

clever_trevor
quelle
2

Wechseln Sie bei Flutter-Projekten mit dem VS-Code-Editor zum Projektquellordner, löschen Sie den Ordner "build" und starten Sie das Debuggen.

Abhi R.
quelle
2

Ich habe dieses Problem bei einem Projekt mit Dolch und mehreren Modulen. Was für mich funktioniert hat (keines der oben genannten hat funktioniert) war 1) den .gradle-Ordner zu leeren 2) den .idea-Ordner zu leeren 3) im Projekt gradle.properties org.gradle.caching = false zu markieren 4) Caches in AS möglicherweise ungültig zu machen , sauber, wieder aufzubauen

Möglicherweise können Sie mit nur # 3 davonkommen, reinigen und dann bauen.

BEARBEITEN: In letzter Zeit konnte ich dies umgehen, indem ich AS neu startete, dann eine Bereinigung durchführte und dann erneut installierte.

Justin
quelle
seltsam. Ich habe einige oben versucht. Das hat bei mir funktioniert. Diese Android-Entwicklung wird verrückt. Code für 30 Sekunden und warten Sie 5 Minuten, um den Build zu erhalten
Satyajit
@ Satyajit. 5 Minuten!! meins dauert 10! Dies ist die einzige, die konsequent für mich funktioniert.
Dan Anderson
Ich bin in der Lage, es ./gradlew installDebugvon der Kommandozeile aus zum
Laufen zu
2

Die Ursache für dieses Problem war für mich, dass für eines der Module meiner App die falsche Build-Variante ausgewählt wurde. Aus dem Tool "Varianten erstellen" habe ich die Modulvariante ausgewählt, die zum App-Modul passt, und das Problem wurde für mich behoben.

Kirche
quelle
1

Ich hatte dieses Problem unter Android Studio, weil ich in meinem Debug-Build das Versionsnamensuffix -DEBUG hinzugefügt habe und das - das Problem war.

Versuchen Sie, Ihre Versionsnamen und Anwendungs-IDs nur mit Buchstaben, Zahlen und Punkten zu versehen

Bruno Oliveira
quelle
1

Navigieren Sie zu Run/Debug Configurations

Klicken Sie auf der oberen Registerkarte Ausführen> Konfigurationen bearbeiten

  • Modul: Wählen Sie Ihre App aus
  • Installationsoptionen: Standard-APK bereitstellen
  • OK

Geben Sie hier die Bildbeschreibung ein

user14612787
quelle
0

Ich hatte gerade den gleichen Fehler. Ich hatte das Jahr 2015 in der App ID. Ich habe 2015 durch fünfzehn ersetzt und das hat es gelöst.

Wenn Sie Android Studio verwenden, können Sie außerdem Folgendes versuchen: Tools / Android / Projekt mit Gradle-Dateien synchronisieren

Borzh
quelle
0

Erzwingen Sie das Stoppen der Anwendung in den Geräteeinstellungen.

Evya
quelle
0

Ich hatte dieses Problem und keine der oben genannten Lösungen funktionierte für mich.

Der Grund ist wahrscheinlich das Root-Telefon, für das nur auf der SD-Karte Kontingent- oder Apk-Installationsberechtigungen verfügbar sind.

Ich habe das Problem mit ADB behoben (Sie benötigen ein gerootetes Gerät):

  1. Schließen Sie Ihr Telefon über USB an
  2. Starten Sie ADB mit der ADB-Shell
  3. Wechseln Sie mit su in den Root-Modus
  4. Erstellen Sie den Ordner tmp auf der SD-Karte: mkdir / sdcard / tmp
  5. cd / data / local
  6. Erstellen Sie einen Link zum Ordner auf der SD-Karte: ln -s / sdcard / tmp tmp
Bochaltura
quelle
0

Es scheint mehrere Gründe für diesen Fehler zu geben. Für mich bestand das Problem darin, dass ich in der AndroidManifest-Datei mit dem Tag "used-library" auf eine nicht vorhandene Bibliothek (nur auf diesem bestimmten Gerät) verwiesen hatte. Nach dem Entfernen der Bibliothek, auf der dieses Gerät nicht vorhanden war, wurde die apk ordnungsgemäß installiert.

akash
quelle
0

Ich habe den Archetyp androidquickstart maven verwendet und hatte das gleiche Problem:

Mein Paketname war ein einziger Android-Schnellstart. Nach vorheriger Empfehlung

  1. Ich habe das Paket in androidquickstart.test geändert
  2. dann in AndroidManifest.xml I haben sich geändert package="androidquickstart"zu package="androidquickstart.test"und entsprechend Test von anderen Teilen xml entfernt , <activity android:name=".test.HelloAndroidActivity" >um<activity android:name=".HelloAndroidActivity" >
  3. und auch Paketprobleme in Java-Dateien behoben (hervorgehoben durch die IDE)
Ilya Yevlampiev
quelle
0

Ihr Paketname sollte Wörter enthalten, die durch Punkte wie com.example oder prashant.mydairy kombiniert werden. Es sollte jetzt gut funktionieren

Folgende Dateien müssen aktualisiert werden: 1) Manifestdatei 2) Gradle-Datei (Modul-App): applicationId "package.name"

Prashant Yalatwar
quelle
1
sollte Kommentar sein
Furqan
0

Der Name taskAffinity muss mindestens ein '.' Separator

android_su
quelle
0

Wenn Sie Zugriff auf die Gerätekonsole (ADB-Shell) haben, ändern Sie die folgenden Berechtigungen:

  1. chmod 777 / data /
  2. chmod 777 / data / local /
    Möglicherweise möchten Sie auch versuchen, die apk /data/local/in diese zu kopieren. Stellen Sie in diesem Fall sicher, dass die richtigen Berechtigungen auch für die apk festgelegt sind .
  3. chmod 777 /data/local/myapk.apk Sie können jetzt eine Installation versuchen durch: pm install -r -d /data/local/myapk.apk (beachten Sie den absoluten Pfad)
Sabin
quelle
0

Es sieht so aus, als hätte man eine Nummer, nachdem der Punkt der Schuldige war.

Ich hatte das gleiche Problem mit der folgenden applicationId

org.tony.stark.125jarvis

Ändern in

org.tony.stark.jarvis

Ich konnte die App auf den Android-Geräten installieren.

Ismail Iqbal
quelle
0

Sie können diese Fehlermeldung erhalten , wenn die minSdkVersionin builde.gradlegrößer als das Android - Version des Geräts ist. In diesem Fall müssen Sie die ändern minSdkVersion.

anemomylos
quelle
0

Code in AndroidManifest.xml löschen:

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

Es klappt.

Lichao
quelle