Beobachtet dieses sehr seltsame Verhalten mit Android-Anwendung. Ungefähres Szenario:
- Version A auf dem Gerät installiert
- Anwendung funktioniert in Ordnung
- Auf dem Gerät installierte Version B (B> A)
- Anwendung funktioniert in Ordnung
- Gerät schaltet sich aufgrund von Batterieentladung aus
- Gerät eingeschaltet
- Version A der Anwendung wird erneut auf dem Gerät ausgeführt
Zusätzliche Information:
- Die Anwendung wird nicht über Google Play vertrieben, sondern lokal über eine USB-Verbindung installiert (HINWEIS: Die Anwendung wird in der Produktion ausgeführt; sie wird nicht über AndroidStudio installiert).
- Kiosk
- Android 5.1 (API 22)
Ich habe wohl zwei Fragen:
- Warum hat das Gerät die ältere Version des APK zwischengespeichert (und wo hat es sie zwischengespeichert)?
- Unter welchen Umständen können Anwendungen auf solche früheren Versionen zurückgesetzt werden?
Bearbeiten (weitere Informationen):
- Es sieht so aus, als ob die Anwendung nach dem Zurücksetzen der APK einige Berechtigungen verliert (möglicherweise sogar alle). Funktionen, die vor dem Rollback funktionierten, funktionieren nicht mehr, da SecurityException von den Android-APIs ausgelöst wurde. Dies geschieht, obwohl diese Version von Android noch keine Laufzeitberechtigungen hat!
- Nach dem Surfen Dateisystem des Tablets, sehe ich in der Tat mehrere App APKs unter ähnlichen Pfaden mit Wohnsitz:
/data/app/com.myapp-2/base.apk
,/data/app/com.myapp-3/base.apk
usw.
Meine aktuelle Hypothese lautet, dass der Akku dazu führt, dass das Tablet seinen Status "zurücksetzt" (z. B. wird auch die Uhr zurückgesetzt). Wenn es wieder eingeschaltet wird, verwechselt es zwischen den APKs der App und lädt das falsche.
Ich habe jedoch keine Ahnung, warum das so ist oder wie man dieses Verhalten verhindert.
Antworten:
Wenn Sie Android Studio 3.5+ verwenden, verwenden Sie anstelle der sofortigen Ausführung wahrscheinlich Änderungen übernehmen.
Dies hat eine andere Art, Änderungen an dem Gerät zu versenden, ohne die apk neu zu schreiben. Es ist also sehr sinnvoll, dass die apk, die Sie ausführen, wenn Sie Ihre App direkt auf dem Gerät ausführen, nach dem Neustart nichts mit der einen zu tun hat das lief vorher
https://android-developers.googleblog.com/2019/08/android-studio-35-project-marble-goes.html
quelle
Hier werden vom Benutzer installierte Pakete aufgelistet:
Und dann vollständig deinstallieren, bevor Sie neu installieren:
Bei sofortiger Ausführung und ohne Anwendung des Patch-APK (siehe
pm
Hilfeausgabe) wird möglicherweise das Basis-APK ausgeführt. Dies führt zu keinem Rollback, aber es ist wahrscheinlich, dass das eine APK ohne das andere APK überlastet ist (Android Studio automatisiert möglicherweise die Anwendung des Hot-Patch, dies ist jedoch beim Booten möglicherweise nicht der Fall). Wenn Sie Instant Run nicht verwenden, werden diese Patch-Update-APKs entfernt. und wenn es nur eine APK gibt, gibt es nichts anderes zu laufen.quelle
Der Trick hier ist im Versionscode. Stellen Sie bei der Installation einer neuen Version sicher, dass die neue Version einen anderen Versionscode hat . Das Android-Betriebssystem verwendet Versionscodes, um zwischen verschiedenen Versionen derselben APK zu unterscheiden. Dies würde also funktionieren.
Es ist nicht wirklich klar, warum dieser Rollback passiert. Dies ist offensichtlich ein seltsames gerätespezifisches Problem, aber dennoch können eine Vielzahl von Faktoren verantwortlich sein, darunter das Standardinstallationsprogramm des Geräts, Speicher- / Cache-Einstellungen, Gerätespeicher, Viren usw.
Ich hoffe das hilft. Frohe Codierung!
quelle