2016-07-07 14 views
1

Wir entwickeln eine Android-App und ich habe eine apk über eine Website für unsere Pilot-Nutzer zur Verfügung gestellt. Die Benutzer haben die Einstellung Von unbekannten Quellen installieren aktiviert. Die App installiert und funktionierte gut.Update Android App mit apk-Paket von externer Quelle

Jetzt habe ich eine neuere Version der App hochgeladen. Wir haben die Versionsnummer des apk-Pakets geändert, und die neue Version erfordert mehr Berechtigungen vom Telefon, z. B. Verhindern, dass das Telefon schläft, wenn nur die erste Version benötigt wird. Vollständiger Netzwerkzugriff.

Wenn ich die neue Version lade und öffne, heißt es "Möchten Sie ein Update für diese bestehende Anwendung installieren ... Dann erhält die aktualisierte Anwendung Zugriff auf:" und listet dann die hinzugefügten Berechtigungen unter einer Neuen Registerkarte auf Berechtigungen unter Alle.

Also die Installation identifiziert, dass dies ein Update ist und was sich in Bezug auf zusätzliche Berechtigungen geändert hat.

Wenn ich mit der Installation fortfahre, stoppt die Installation mit der Meldung "Ein bestehendes Paket mit demselben Namen mit einer widersprüchlichen Signatur ist bereits installiert".

Was muss ich tun/ändern, um die bestehende App aktualisieren zu können?

+0

hast du einen neuen Keystore für aktualisierte apk erstellt? – Nitesh

+0

Stellen Sie sicher, dass Sie beim Erstellen von apk den gleichen Produktionsschlüsselspeicher verwenden. Es kann aufgrund Ihres Portals, dass Sie versuchen, zu tun. Im Playstore wird es nicht passieren, da Keystore gleich ist. – Stallion

Antwort

2

Alle Android-Apps sind mit einem Schlüssel signiert. Sogar Debug-Builds. Bei Debug-Builds generiert Ihre IDE automatisch einen Schlüssel für Sie. Sie können ein Paket, das mit einem Schlüssel signiert wurde, nicht für ein Paket aktualisieren, das von einem anderen Schlüssel signiert wurde. Sie müssen den gleichen Schlüssel verwenden. Wenn Sie Debug-Builds verteilen, die nicht auf demselben Computer erstellt wurden, wurden die zwei wahrscheinlichsten Schlüssel verwendet.

Die einzige Möglichkeit, dies jetzt zu beheben, ist, sie zu deinstallieren und neu zu installieren. Machen Sie dann einige interne Richtlinien über den zu verwendenden Schlüssel. Um das bei meiner Arbeit zu verhindern, benutzen wir alle denselben Debug-Schlüssel (wir haben einen separaten Release-Schlüssel, damit wir nicht versehentlich einen Debug-Build hochladen).

1

Die alte Anwendung hatte eine Unterzeichnung Signatur A, aber die neue Anwendung bekam eine Unterzeichnung Unterschrift B.

Typischerweise vielleicht Sie Ihre Anwendungen erstellen, indem Sie den Debug-Schlüsselspeicher verwenden. Wenn es der Fall ist, ist es keine gute Sache zu tun. Aber da es eine "unbekannte Quelle" ist, ist es nicht sehr wichtig.

Zweitens, Sie erstellen wahrscheinlich die neue Version auf einem anderen Computer als die alte, dh ein anderer Debug-Keystore wird verwendet.

Ein Keystore wird verwendet, um zu überprüfen, ob der Hersteller zwischen zwei Aktualisierungen einer Anwendung nicht gewechselt hat. Dies ist ein sicherer Schutz.

In Ihrem speziellen Fall schlage ich vor, dass Sie den Debug-Keystore, der für die alte Version verwendet wurde, und verwenden Sie das gleiche, wenn Sie die neue Version kompilieren.

Der Debug Keystore befindet sich im Verzeichnis ".android" im Benutzerverzeichnis Ihres Computers (möglicherweise ein versteckter Ordner).

Beachten Sie, dass ein bestimmter Debug-Keystore nur für 365 Tage verwendbar ist, wenn der Keystore erstellt wird.

Wenn Sie dieses Problem vermeiden möchten, verwenden Sie bitte einen Freigabesignierschlüssel. https://developer.android.com/studio/publish/app-signing.html

Verwandte Themen