Führen Sie Betriebssystem- und APK-Updates heimlich programmgesteuert durch [geschlossen]

Ich versuche, ein System für die Durchführung von Over-the-Air-Updates für APK und OS auf meinen Android-Geräten zu erstellen. Meine Frage bezieht sich auf den Teil der tatsächlichen Durchführung des Upgrades, nachdem die Pakete für OS und APK heruntergeladen wurden. Bitte beachten Sie Folgendes:

  1. Ich kann Play-Store/Play-Services nicht verwenden, da auf meinem Gerät keine Play-Services installiert sind.
  2. Ich benötige, dass der Aktualisierungsprozess für APK und OS im Hintergrund ohne Benutzereingriff durchgeführt wird.
  3. Ich habe Root-/Admin-Rechte auf den Geräten.
  4. Die Android-Versionen, die ich verwenden werde, sind Kitkat, Lollipop und Marshmallow.
  5. Auf dem Gerät läuft eine APK, die nach Updates von meinem Server sucht und sie herunterlädt. Ich möchte dann, dass es das Update für APK und OS aus dem Code initiiert.

Zum APK-Update:

Ich habe das APK-Update tatsächlich versucht und erfolgreich durchgeführt, indem ich den Shell-Befehl ausgeführt habe pm install -r $PATH_TO_DOWNLOADED_APK, nachdem ich die Shell aus Runtime.getRuntime().exec("su")meinem App-Code erhalten habe.

Meine Fragen sind:

  1. Falls bei der Installation der APK etwas schief geht – zum Beispiel wenn das Gerät während des Updates heruntergefahren wird oder es ein Problem im APK-Paket oder ähnliches gab – stellt Android in diesem Fall sicher, dass die APP auf die zurückgesetzt wird vorherige Version korrekt und es gehen keine Daten verloren oder ich muss etwas in meinem Code beachten.

Bezüglich OS-Update:

Ich habe auf folgenden Link verwiesen: https://source.android.com/devices/tech/ota/ Allerdings habe ich es nicht ganz verstanden.

Meine Fragen sind:

  1. Gibt es einen bestimmten Ordner, in dem ich das heruntergeladene Betriebssystempaket aufbewahren muss? Wenn ja, welcher Ordner ist das? Wenn nein, wie gebe ich den Pfad dazu an?
  2. Wofür ist der entsprechende Befehl pm install -r $PATH_TO_APKim Falle von Betriebssystemaktualisierungen?
  3. Wie starte ich ein Gerät im "Wiederherstellungsmodus", wie in Punkt 3 im Link erwähnt?
  4. Wo befinden sich die Boot- und Wiederherstellungspartitionen im Gerät? Ist das von Gerät zu Gerät unterschiedlich? In einem der Geräte, die ich bei mir habe, sehe ich keinen /boot- oder /recovery-Ordner? Bedeutet Booten den Ordner / (Root)?
  5. Falls das Betriebssystem-Update aus irgendeinem Grund fehlschlägt (das Gerät wird während des Updates heruntergefahren, es gab ein Problem im Update-Paket usw.) – stellt Android ein ordnungsgemäßes Rollback sicher und dass sich das Gerät in einem konsistenten Zustand befindet und keine Daten verloren gehen? Wenn nein, wie soll der Code, der es initiiert, damit umgehen?
Hallo! Es gibt einige Dinge, bei denen wir hier helfen können, aber wir nehmen keine programmier-/entwicklungsorientierten Fragen an. Weitere Informationen finden Sie in der Hilfe .

Antworten (1)

Gibt es einen bestimmten Ordner, in dem ich das heruntergeladene Betriebssystempaket aufbewahren muss? Wenn ja, welcher Ordner ist das? Wenn nein, wie gebe ich den Pfad dazu an?

Android behält das heruntergeladene Paket in der Cache-Partition, da die Datenpartition heutzutage angeblich verschlüsselt ist und von Android nicht im Wiederherstellungsmodus gemountet werden kann, ohne den Entschlüsselungsschlüssel bereitzustellen, und es keine andere Partition gibt, die groß genug ist, um größere Dateien zu speichern. Verwenden Sie Root-Zugriff, um die Datei nach /cache zu verschieben. Möglicherweise müssen Sie auch die entsprechende Berechtigung dafür festlegen.

Wofür ist der entsprechende Befehl pm install -r $PATH_TO_APKim Falle von Betriebssystemaktualisierungen?

Die Betriebssystemaktualisierung erfolgt im Wiederherstellungsmodus (ein Barebone-Betriebssystem) und die Wiederherstellung kann eine Bestimmung enthalten, um die automatische Ausführung von Befehlen zu ermöglichen. Android Stock Recovery (<3e>) liest /cache/recovery/command und führt sie automatisch aus. Wenn es TWRP v2.1 oder höher ist, ist die Datei /cache/recovery/openrecoveryscript . Überprüfen Sie ihre Links, um mehr zu erfahren.

Wie starte ich ein Gerät im "Wiederherstellungsmodus", wie in Punkt 3 im Link erwähnt?

Meine Antwort hier hat es abgedeckt.

Wo befinden sich die Boot- und Wiederherstellungspartitionen im Gerät? Ist das von Gerät zu Gerät unterschiedlich? In einem der Geräte, die ich bei mir habe, sehe ich keinen /boot- oder /recovery-Ordner? Bedeutet Booten den Ordner / (Root)?

Sie variieren von Gerät zu Gerät, aber Sie finden die Cache-Partition, die unter /cache gemountet ist . Die Boot-Partition muss nicht gemountet werden, da ihr gesamter Inhalt während des Bootens automatisch in den Speicher geladen wird. Sie müssten im Internet suchen, um das Partitionsschema für Ihr spezielles Gerät zu finden. Izzys Fragen und Antworten könnten auch helfen.

Nein, Boot bedeutet nicht / Ordner. Es ist in Wirklichkeit nicht einmal ein Verzeichnis, sondern die Wurzel des größten Baums (Dateihierarchie), der bei jedem Start des Android erstellt und gefüllt wird.

Falls das Betriebssystem-Update aus irgendeinem Grund fehlschlägt (das Gerät wird während des Updates heruntergefahren, es gab ein Problem im Update-Paket usw.) – stellt Android ein ordnungsgemäßes Rollback sicher und dass sich das Gerät in einem konsistenten Zustand befindet und keine Daten verloren gehen?

Nein, wenn die Wiederherstellung mit der Änderung der Systempartition beginnt und unterbrochen wird, gibt es kein Zurück mehr. Selbst wenn der Vorgang normal abgeschlossen wird, kann es beim Startvorgang zu Problemen kommen .

Schließlich kann das Betriebssystem-Update/Upgrade überhaupt nicht als leise bezeichnet werden, da auf dem Bildschirm so viel passiert.

Die Dinge können sich seit Android Nougat geändert haben.