528 Stimmen

Fehler 'App nicht installiert' auf Android

Ich habe ein Programm, das im Android-Emulator funktioniert. Hin und wieder habe ich eine signierte .apk erstellt und sie auf mein HTC Desire exportiert, um sie zu testen. Es hat alles gut funktioniert.

Bei meiner letzten exportierten .apk erhalte ich die Fehlermeldung "App nicht installiert", wenn ich versuche, die .apk zu installieren. Auf den Emulatoren läuft es gut.

Da ich hauptsächlich auf den Emulatoren getestet und nur ab und zu auf ein echtes Telefon exportiert habe, bin ich mir nicht sicher, wann das passiert ist. Was ist die wahrscheinliche Ursache dafür, dass es auf einem physischen Telefon nicht installiert werden kann, aber in den Emulatoren problemlos läuft?

Ich habe versucht, das Telefon neu zu starten und die vorhandene .apk zu entfernen, aber das hat den Fehler nicht behoben.

6 Stimmen

Wenn Sie sagen, Sie hätten die vorhandene .apk-Datei entfernt, meinen Sie damit, dass Sie die Anwendung vom Telefon deinstalliert haben? Wenn nicht, deinstallieren Sie die Anwendung, bevor Sie versuchen, sie erneut zu installieren.

10 Stimmen

Was TomS sagte, laufen adb uninstall your.package.name und dann adb install /path/to.apk . Ich wüsste nicht, warum das nicht funktionieren sollte. Haben Sie irgendetwas an der Unterschriftsprozedur geändert?

2 Stimmen

Haben Sie versucht, es direkt von Eclipse in dem an den Computer angeschlossenen Gerät zu debuggen, um zu sehen, ob das Protokoll etwas mehr sagt?

38voto

Simran Sharma Punkte 677

In meinem Fall hatte ich die Aktivität meines Launchers als android:exported="false"

<activity android:name=".MainActivity"
            android:exported="false">

Ich habe kürzlich Android 12 ins Visier genommen und musste die android:exported Attribut in meinen Manifestkomponenten, wusste aber nicht, was ich als Wert eingeben sollte. android:exported="true" gearbeitet.

32voto

christophe Punkte 659

Ich stehe vor dem gleichen Problem. Das Problem war, dass die Hauptaktivität in meiner AndroidManifest.xml-Datei zweimal geschrieben wurde. Ich habe das Duplikat gelöscht.

23 Stimmen

Danke für den Hinweis! In meinem Fall android:exported wurde für die Startaktivität auf false gesetzt

24voto

Akshay More Punkte 408

Für diejenigen, die Android Studio 3 verwenden.

Die Antwort von Suryanarayana Reddy ist richtig, obwohl sie keine Schritte zur Lösung des Problems angibt.

in Ihrer AndroidManifest.xml unter dem Anwendungs-Tag hinzufügen testOnly="false" und android:debuggable="true" etwa so:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:testOnly="false"
    android:debuggable="true"
    >

bearbeiten
dann in der Menüleiste von AndroidStudio Build > Build APK(s)

1 Stimmen

Gracias. android:debuggable="true" führt zu Error: Avoid hardcoding the debug mode; leaving it out allows debug and release builds to automatically assign one [HardcodedDebugMode] . Ich habe versucht android:testOnly="false" beide Build > Build Bundl(s) / APK(s) > Build APK(s) y Build > Generate SignedBundle APK... mit Signaturversionen v1, v2 (wie im oberen Screenshot). Musste vorher die vorherige App entfernen und dann eine neue installieren.

2 Stimmen

Ich bin kürzlich auf dieses Problem gestoßen. Einfach Android:testOnly="false" und Build -> Build Apks hinzufügen und fertig. Alles geklärt. Danke! Es ist nicht nötig, eine andere Android-Eigenschaft wie Android:debuggable="true" hinzuzufügen.

0 Stimmen

testOnly="false" Das hat geklappt, danke!

21voto

Sergey Glotov Punkte 19959

Dies kann passieren, wenn Sie Ihre MainActivity zweimal in Ihrer AndroidManifest.xml deklariert haben.

Ein anderer möglicher Grund: Sie haben die Startaktivität geändert. Tipp: Tun Sie das nie bei bereits veröffentlichten Anwendungen! Gründe, die in Android-Entwickler-Blog .

4 Stimmen

+1 android:name Attribut eines beliebigen Activity , Service , BroadcastReceiver und so weiter können in der Manifestdatei nicht geändert werden. Obwohl es scheint, als wäre es der private Bezeichner innerhalb Ihrer Anwendung, ist es eine öffentliche API.

0 Stimmen

Ich muss meine Startaktivität ändern. Ich habe einen Splash-Screen hinzugefügt und muss darin Feeds herunterladen, bevor ich die Hauptaktivität starte. Haben Sie eine andere Lösung, als den Startbildschirm in die Hauptaktivität zu integrieren?

2 Stimmen

Sie können einen <activity-alias>-Tag verwenden, um dies zu handhaben!

20voto

124697 Punkte 21057

Ich hatte das gleiche Problem. Mir war nicht klar, dass eine App auch zum Testen signiert sein muss.

Nachdem ich es selbst signiert hatte, wurde es problemlos installiert.

1 Stimmen

Weitere Informationen finden Sie hier: stackoverflow.com/questions/4853011/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X