Was ist der Workflow auf Geräten, wenn der Play Store eine App aktualisiert? Was passiert, wenn der Benutzer die App gleichzeitig verwendet?
Ich frage, weil wir einige Abstürze haben, wo eine String ID nicht gefunden werden kann, und wenn wir die APKs betrachtet haben, ist die String-Ressource in beiden Versionen verfügbar - aber die in den Abstürzen gemeldete Hex-ID wird in der alten APK gefunden in der NEUEN. Das ist seltsam.
Dies führt uns zu der Annahme, dass der Play Store die Dateien und Ressourcen der App während der Ausführung der App aktualisiert hat. Wenn er die Zeichenfolgenressource zum Laden von etwas nachsuchte, verwendete er die alte ID aus dem Speicher und natürlich nicht. t finden Sie es in den neu aktualisierten Dateien .. führt zu der ResourceNotFound Ausnahme.
Wie ist das möglich? Ist es überhaupt möglich? Ich denke nicht, außer dass wir in die APKs geschaut haben und die ID, die beim Absturz war, mit der alten Ressourcen-ID übereinstimmt und nicht mit der neuen, die wir gerade gedrückt haben.
Nach meinen Recherchen scheint es, als müsste die App geschlossen werden, damit die Dateien für die Aktualisierung erreichbar sind. Nach dem Schließen aktualisiert Google Play nur die geänderten Teile der Apk, um Zeit und Kosten zu sparen.
Ich habe mehrere Forenbeiträge gefunden, die Ihnen beibringen, wie man App-Optionen aus dem Flash-ROM zurücksetzt (was bei gerooteten Geräten immer der Fall ist). Möglicherweise hat der Benutzer nach Erhalt des Updates einen Rollback versucht. Entweder das oder die ID, die beim Absturz aufgetreten ist, wird in einem Teil Ihrer apk referenziert, der nicht aktualisiert wurde.
Quellen: Update-Benachrichtigung
Wenn der Benutzer die App zur gleichen Zeit benutzt, wie er die App aktualisiert, erlaubt das Linux-Dateisystem das oben beschriebene Verhalten. Ein Prozess, der eine geöffnete Datei enthält (denken Sie daran, dass die App während der Ausführung der Anwendung ausgeführt werden kann), behält das ausführbare Abbild im Speicher, selbst wenn die ausführbare Datei auf der Festplatte aktualisiert wurde. Was dies ermöglicht, ist die neue apk, die mit dem alten exe-Bild, das noch im Speicher ist, ausgepackt und ausgepackt wird.
Ressourcendateien werden in der Regel nur langsam geladen. Daher wird beim Navigieren im alten Speicher nach Ressourcen gesucht und möglicherweise eine Ressource aus der neu entpackten App geladen. Die Ressource ist möglicherweise nicht mit der alten App kompatibel und verursacht einen Absturz.
Ich erinnere mich an ein Problem wie dieses - das Problem in meiner Situation war, dass wir Ressourcen-IDs (und sogar serialisierte Aufzählungswerte) über Benutzereinstellungen speicherten. Sobald unsere App aktualisiert wurde (neue Aufzählungswerte, neue Ressourcen), wurden alte Werte aus den Benutzereinstellungen geladen und in Code übertragen, was zu Abstürzen führte.
Vielleicht ist das nicht Ihr Problem, aber es lohnt sich zu überprüfen, dass Sie keine IDs für Ressourcen speichern / laden, die nicht mehr existieren.
Tags und Links android