Migration von Android 2.x (rooted) auf 4.x (unrooted)

  • 7 Antworten
  • Letztes Antwortdatum
S

suit1337

Neues Mitglied
1
Hallo,

ich möchte die Anwendungsdaten von einem alten Telefon auf ein neues übertragen.

Das erste Gerät hat ein Android 2.3 mit root -ein komplettes Backup der Anwendungsdaten im Klartext (aus /data/data/) kann ich problemlos über die Shell oder mittels adb pull holen und auch wieder zurückspielen - das war auch bisher mein Backup-Weg.

Das andere Gerät auf das diese Backups übertragen werden soll ist ein Android 4.3 Gerät ohne Root - aus diese bekomme ich die Daten mit adb backup raus und mit adb restore wieder rein, funktioniert einwandfrei.

Jetzt möchte ich folgendes tun:
1) ein Pseudo-Backup vom 4.3-Gerät ziehen
Code:
adb backup -noapk -f com.rovio.angrybirds.ab        com.rovio.angrybirds

2) diese Backup entpacken
Code:
java -jar abe.jar unpack com.rovio.angrybirds.ab        com.rovio.angrybirds.tar

3) das tar-File entpacken (das p-Flag um die Rechte beizubehalten; dabei entsteht ein Verzeichnis "apps" mit einem Unterverzeichnis "com.rovio.angrybirds" usw.)
Code:
tar -xf com.rovio.angrybirds.tar -p

4) die betreffenden Files ersetzen (in dem Fall highscores.lua und settings.lua) - dabei werden selbstverständlich die Rechte/Benutzer beachtet und wie bei den original files gesetzt

5) das Verzeichnis wieder packen
[CODE]tar -cf com.rovio.angrybirds.tar apps

6) das tar-File wieder in ein Android-Backup konvertieren
[CODE]java -jar abe.jar pack com.rovio.angrybirds.tar        com.rovio.angrybirds.ab

7) das ab-File wieder zurückspielen
Code:
adb restore com.rovio.angrybirds.ab

Klingt alles soweit vernünftig, funktioniert aber nicht :)

Wenn ich nur Schritt 1, 2, 6 und 7 ausführe, funktioniert es einwandfrei (halt mit dem Pseudo-Backup) - also kann ich wie eingangs erwähnt einen Fehler in adb oder dem android-backup-extractor ausschließen.

In jedem der Android-Backups gibts ein _manifest-File mit dem ich nichts anfangen kann, was tut das?

Der Inhalt sieht in etwas so aus wobei die Hex-Zahlenfolge in diesem Fall fast 1000 Zeichen umfasst:

Code:
1
com.rovio.angrybirds
1530
18
com.android.vending
0
1
308201ef30820158a00302010202044c6cf74...

Ich vermute, das ist eine Prüfsumme über die im Backup enthaltenen Daten - oder irre ich da?

Und zum Abschluss die Konkrete Frage:
- Wie löse ich mein Problem?
- Bzw. gibt es einen anderen Weg, das Problem zu lösen?

Wie gesagt: Quellgerät mit Android 2.3 hat root, Zielgerät mit 4.3 nicht - das lässt sich nicht ändern. Wenn ich das könnte, wäre die Lösung für mein Problem einfach: mit adb push die Daten zurückschieben und die Sache ist erledigt :)

Danke im Voraus
 
mmh Ich würde ja sagen - dann roote den kernel doch einfach ;)

mmhh gibts auf dem Zielgerät zufällig n custom recovery bei welchem du arbeiten könntest?
Und japp das mit der Prüfsumme nehm ich auch mal stark an (vll von allen apks aneinandergereit)
 
Nein, das Zielgerät ist ein nagelneues Xperia Z1 Compact - da wird vorerst nichts daran geändert.

Dass die Prüfsumme alle APKs umfasst halte ich für unwahrscheinlich, jedes der Backups hat eine ähnlich lange Wurst. Es sind aber auch keine Prüfsummen der enthaltenen Files, sonst müssten Backups mit mehr Daten längere Zeichenketten aufweisen.

Gibts irgendwo eine Dokumentation wie die Android-Backup-Files funktionieren?
 
weiß ich ausm Stehgreif nicht -
aber hast du mal versucht was passiert wenn du diese Zahlenkolonnen mitnimmst in das neue Backup?
 
So, ich hab' etwas gefunden was möglicherweise hilft:

https://android.googlesource.com/platform/frameworks/base/+/4a627c71ff53a4fca1f961f4b1dcc0461df18a06

Der Fehler liegt vermutlich bei Schritt 3 und 5.

Das Ganze ist zwar im Prinzip ein tar-File, aber hat ein paar kleine Abweichungen:
die Reihenfolge ist ausschlaggebend - tar macht das, wenn man es nicht mit einer Liste definiert, alphabetisch - das Android-Backup aber nicht

Ich werd' das die nächsten Tage mal testen - muss doch zu bewerkstelligen sein :)
 
vll mit der -u funktion tar nur dazu benutzen die file upzudaten?!?
 
-u hab' ich garnicht probiert, weil es spätestens beim Hinzufügen von Files scheitert

Ich hab' das Problem jetzt im Ansatz gelöst, es sind zwei Faktoren ausschlaggebend: erstens die Reihenfolge: _manifest muss an erster Stelle im Archiv sein und danach müssen die Ordner in einer bestimmten Reihenfolge liegen, die restlichen Files scheinen dann egal zu sein. Wichtig ist aber noch, dass der Pfadseparator kein Slash sein darf.

Schritt 1 und 2 bleiben gleich - weil ich immer noch nicht rausgefunden habe, wie die Datenstruktur beschaffen ist.

Ich werd' diesbezüglich eine Anleitung schreiben und den Link dann hier veröffentlichen - danke vorers für die Hilfe ;)
 

Ähnliche Themen

G
  • Garthoff
Antworten
1
Aufrufe
566
Blaze1984
Blaze1984
somboku
  • somboku
Antworten
5
Aufrufe
1.097
Klaus986
K
J
Antworten
2
Aufrufe
245
Klaus986
K
Zurück
Oben Unten