Ich möchte meine App auf GooglePlay veröffentlichen, aber zuerst möchte ich einen letzten Test mit der signierten APK durchführen, um sicherzustellen, dass alle verwendeten API-Schlüssel mit der Release-Version (GMaps, Facebook usw.) korrekt funktionieren.
Also habe ich nur eine signierte Version meiner App mit unserem Release-Schlüssel erstellt und beim Versuch, die App auf dem Gerät zu installieren ist ein Fehler aufgetreten:
Ich habe versucht, die apk auf das Gerät zu kopieren und mit einer apk-Installations-App zu installieren.
Merkwürdige Sache ist, wenn ich den gleichen Prozess mache mit Debug-Signaturschlüssel ist alles in Ordnung, ich kann die App installieren und ausführen.
Hier sind die Schritte der Prozedur:
Ich wähle den Auslöser , tippe Passwort ein.
Ich tue wähle den Release-Build-Typ anstatt zu debuggen
Nur für den Fall ich habe auch in der Gradle-Datei die Signaturschlüssel definiert aber ich muss zugeben, ich weiß nicht, ob es notwendig ist.
Ich habe es jetzt sieben Mal wie 7 versucht, also gehe ich davon aus, dass dieses Problem nicht nur ein falsch eingegebenes Passwort ist , auch Ich kann dies mit dem Standard-Debug-Android-Signaturschlüssel ausführen.
Bitte helfen Sie, wenn Sie können.
Möglicherweise verwenden Sie Android 5.0 oder höher.
Gehen Sie einfach zu Einstellungen -> Apps -> Klicken Sie auf Ihre App. ---> Auf der App-Info-Seite im Aktionsleistenmenü gibt es eine Option namens "Deinstallation für alle Benutzer". Klicken Sie darauf. Ihre App wird vollständig deinstalliert und Sie können jetzt versuchen, die neue Version ohne Probleme zu installieren. Hoffe das wird dir helfen
Überprüfen Sie meine Lösung von unten.
Ich hoffe es wird dir helfen.
Für aktuelle Updated Android Studio 2.3
-Benutzer ist diese Antwort für Sie da, da Eclipse heutzutage kaum von Menschen für die Android-Entwicklung verwendet wird, da Android Studio große Fortschritte erzielt.
Folgen Sie diesem Weg, um Ihre Signed apk
-Datei zu erstellen.
Build
> Generiere Signed apk
.Keystore path
.Password, alias, key password
.Build type
entsprechend auswählen (z. B. um im Playstore release
freizugeben).Signature Version
Markieren Sie die Kontrollkästchen V1
und V2
.Finsih
.Explorer
, wo Sie die apk zum Speichern ausgewählt haben, und Sie sehen Ihren .apk
-Dateinamen als app-release.apk
."App nicht installiert" zeigt an, wenn eine App mit demselben Paket bereits auf demselben Gerät installiert ist. Löschen Sie einfach Ihre erste Anwendung, die Sie zu Testzwecken verwendet haben, bevor Sie sie zur signierten apk-Datei machen. Das wird funktionieren. Prost!
Wählen Sie sowohl Signature Version v1 als auch v2, um das Problem zu beheben
v1 Schema
Eine JAR-Datei kann mit dem Befehlszeilen-Jarsigner-Tool oder mit .__ signiert werden. direkt über die Java.security-API. Jeder Dateieintrag einschließlich Nicht-Signatur-bezogene Dateien im META-INF-Verzeichnis werden signiert wenn die JAR-Datei vom Jarsigner-Tool signiert ist. Für jeden Dateieintrag in der signierten JAR-Datei signiert, wird ein einzelner Manifesteintrag erstellt denn solange es noch nicht im Manifest existiert
V2-Schema
v1-Signaturen schützen einige Teile des APK nicht, z. B. Zip Metadaten. Der APK-Verifizierer muss viele nicht vertrauenswürdige (noch nicht __ verifizierte) Datenstrukturen verarbeiten und dann Daten verwerfen, die nicht von .__ abgedeckt sind. Unterschriften Dies bietet eine beträchtliche Angriffsfläche. Darüber hinaus ist die APK Der Verifizierer muss alle komprimierten Einträge dekomprimieren, wodurch mehr Zeit benötigt wird und Erinnerung. Um diese Probleme zu lösen, wurde in Android 7.0 APK .__ eingeführt. Signaturschema v2
Standardmäßig signieren Android Studio 2.2 und das Android Plugin für Gradle 2.2 Ihre App sowohl mit dem APK-Signaturschema v2 als auch mit dem herkömmlichen Signaturschema, das die JAR-Signatur verwendet.
Es wird empfohlen, das APK-Signaturschema v2 zu verwenden, ist jedoch nicht obligatorisch siehe Details
Dasselbe ist mir passiert, solange ich meinen apk aus Build> Build APK generiert habe. Ich konnte die apk so oft installieren und deinstallieren, wie sie waren, und zwar ohne Probleme. Stattdessen erzeugte ich den Build> Generate Signed APK. Wenn ich die apk an das Telefon weitergab und versuchte, sie zu installieren, erlaubte es mir nur eine Gelegenheit, die gleiche, die die folgende Nachricht herauskam:
bis dahin war alles in Ordnung, wenn ich "INSTALLIEREN" gewählt habe. Was passiert, wenn ich die App deinstalliert habe und sie neu installieren wollte (ein mögliches Szenario), passierte Folgendes:
daher habe ich das Problem durch Deaktivieren von Play Protect (in Google Play)> Menü> Play Protect> Suche nach Sicherheitsbedrohungen (Deaktivieren) gelöst.
Hier habe ich dieses Problem gelöst
Der Grund für dieses Problem ist, dass bereits eine Anwendung mit demselben Paketnamen im Telefon vorhanden ist. Sie können sie jedoch nicht im Telefonmenü finden (Sie haben die Deinstallation bereits durchgeführt, sie befindet sich jedoch immer noch in Ihrem Telefon).
Um die Anwendung zu sehen, gehen Sie zu TelefoneEINSTELLUNGEN->APPS. Dort können Sie die Anwendung sehen, aber darin kann die UNINSTALL-Taste deaktiviert sein. Klicken Sie auf die Menüüberlauf-Schaltfläche, um zu sehen - Für alle Benutzer deinstallieren .
Nach der Deinstallation für alle Benutzer wurde mein signiertes apk erfolgreich installiert. __ Sie können die App auch mit adb vom Telefon deinstallieren.
adb uninstall package name
falls Ihr Mobiltelefon mehrere Benutzer unterstützt und prüfen Sie, ob die entsprechende App nicht für andere Benutzer installiert ist. Wenn es für andere installiert ist, deinstallieren Sie zuerst die vorherige App und versuchen Sie es erneut
Dies kann darauf zurückzuführen sein, dass Sie die APK-Datei von einem externen SD-Kartenspeicher ausführen . Kopieren Sie die APK-Datei einfach in das interne Speicherproblem
Es ist eine ziemlich alte Frage, aber meine Lösung bestand darin, versionCode (Zunahme) in build.gradle zu ändern.
Dies kann aufgrund Ihrer Wahl der Signaturversion geschehen. Bei einigen Telefonen treten Installationsfehler auf, wenn die Signaturversion als V2 ausgewählt wurde. Wenn dies der Fall ist, wählen Sie V1 aus, es wird sicherlich funktionieren.
minifyEnabled false
ist das einzige was für mich nach 3 Tagen Recherche in allen Foren funktioniert!
, wenn Ihre Android Studio-Version größer als 3.0 ist
Es sieht so aus, als könnten wir das apk nicht direkt verwenden, nachdem wir es im build -> output-> apk-Ordner auf dem Gerät ausgeführt haben.
Nach dem Upgrade auf Android Studio 3.0 musst du zu Build -> Build Apk (s) gehen und dann den apk von build -> output -> apk -> debug kopieren
Gehe zu Build.Gradle (Modul: App)
benutze dies - minifyEnabled false
Datei> Projektstruktur> Buildvarianten> Release auswählen> Vergewissern Sie sich, dass 'Signing Config' nicht leer ist.> Wählen Sie im Dropdown-Fenster den $signingConfigs.release
aus.
Ich habe dies mit Android Studio 3.1.4 gemacht und es hat mir ermöglicht, ein Release-Apk zu erstellen, nachdem ich alle oben beschriebenen Schritte ausgeführt habe, um das Release-Apk und den Release-Schlüssel zu erstellen und die Informationen zum App-Gradle hinzuzufügen. Prost!
In Android Studio 3.0 und höher
Wie beschrieben hier
Hinweis: Mit der Schaltfläche Ausführen wird ein APK mit testOnly = "true" erstellt. Dies bedeutet, dass das APK nur über adb installiert werden kann (von Android Studio verwendet). Wenn Sie ein Debug-fähiges APK möchten, das Benutzer ohne ADB installieren können, wählen Sie Ihre Debug-Variante und klicken Sie auf Bundle (s)/APK (s)> Build APK (s).
Android:testOnly="false"
in Anwendungs-Tag in AndroidManifest.xml hinzufügen
Referenz: https://commonsware.com/blog/2017/10/31/Android-studio-3p0-flag-test-only.html