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?


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.


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


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


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


9

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


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

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

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.


6

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


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


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"


2

Dies hat in meinem Fall geholfen:

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

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


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.


2

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


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.


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.


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


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


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


0

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


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

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.


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)

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"


1
sollte Kommentar sein
Furqan


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)

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.


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.


0

Code in AndroidManifest.xml löschen:

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

Es klappt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.