Low-Level: So kopieren Sie App-Daten von Android 4 Kitkat auf Android 6 Marshmallow

Ich habe Android-Backups von meinem alten (jetzt toten) Kitkat-Telefon. Beim Versuch, die App-Daten von zwei verschiedenen Apps aus einem Backup wiederherzustellen, kann ich die App nicht mit der alten Datenbank ausführen. Ich kopiere die Dateien nach /data/data/TLD.SOMETHING.APPDIRECORY, aber wenn ich die App öffne, stürzt sie sofort ab.

Mindestens eine der Apps ist genau die gleiche Version wie zuvor, da sie seit Jahren nicht mehr aktualisiert wurde. Die Zugriffsrechte für die Dateien sind korrekt (Benutzer und Gruppe und -rw-------). Wenn ich auf Android 6 Appdaten generiere, indem ich die alten Daten umbenenne und die App starte, stürzt die App nicht ab und die neu generierten Dateien haben die gleichen Zugriffsrechte wie die, die ich wiederhergestellt habe.

Der einzige Grund, der mir einfällt, ist das Format der Datenbank. Ich denke, dass sich das DB-Format höchstwahrscheinlich zwischen Android 4 und 6 geändert hat und Apps nur eine Schnittstelle zum Betriebssystem verwenden, das den eigentlichen DB-Zugriff für die App übernimmt. "Das Betriebssystem" kann ein SQLite-Anbieter von Betriebssystempaketen oder etwas anderes sein. Ist meine Vermutung richtig? Was ist der Unterschied und wie kann ich konvertieren?

Danke!

Ich kann die Frage nach den Datenbankformaten nicht wirklich beantworten, aber wenn Ihr Gerät SELinux oder SEAndroid verwendet, müssen Sie die Sicherheitskontexte der Dateien so korrigieren, dass sie mit der App übereinstimmen, aus der sie gelesen werden sollen, sonst kann eine App die nicht lesen Datei noch löschen und neu erstellen.

Antworten (1)

GiantTree hat dieses Ding zum Laufen gebracht. Mit seinem Kommentar fand ich https://forum.xda-developers.com/showpost.php?s=08f8d78aabe88fb570ec1e59a37e71a8&p=67319237&postcount=3

Was den Trick tut. Sie müssen also Benutzer-, Gruppen-, Unix-Rechte und den SELinux-Sicherheitskontext korrigieren. Danke für diese schnelle Antwort!