Kann ich aus einer installierten App und ihren Daten ein APK erstellen?

Ich möchte eine installierte App inklusive ihrer Daten von einem gerooteten Android-Gerät nehmen und daraus eine APK erstellen, die für die Installation auf einem nicht gerooteten Android-Gerät geeignet ist.

Ist das möglich?

Bearbeiten: Vorhandene Antworten/Kommentare scheinen die Idee zu verstärken, dass vorhandene Apps das Einbetten der Daten einer App in ein APK nicht unterstützen. Vielleicht ist die grundlegendere Frage, kann ein APK Dateien einbetten, die für bestimmt sind /data/data/[appname], oder sind sie darauf beschränkt, bei der Installation in sich geschlossen zu sein?

Anmerkungen:

  • Ich ging davon aus, dass diese Funktionalität, wenn es möglich wäre, in eine App wie Titanium Backup eingebaut würde. Titanium Backup kann App + Daten in einer einzigen Datei sichern, aber diese Datei ist kein APK und kann nur von Titanium Backup selbst wiederhergestellt werden - was für mich keine Hilfe ist, da das Zielgerät nicht gerootet ist und daher TB nicht ausführen kann.
  • Lösungen, die die Verwendung des Terminals am Telefon oder ADB erfordern, sind in Ordnung.

Vielen Dank.

Wenn Sie in den Sicherungsordner von TB schauen, werden Sie feststellen, dass er die .apkEbene speichert (also können Sie das zumindest nehmen). Ich muss in die Datendateien schauen; AFAIR waren dies einfach gespeicherte Eigenschaften, aber ich kann mich nicht an das verwendete Format erinnern. Das Wiederherstellen von Daten auf einem nicht gerooteten Gerät ist jedoch wahrscheinlich aus dem gleichen Grund wie das Sichern sehr schwierig: kein Zugriff auf die Datenordner ...
@Izzy TB hat zwei Sicherungsmethoden. Seine normale speichert drei Dateien im Backup-Verzeichnis – eine tar.gz, die die APK enthält, eine tar.gz, die den Inhalt von /data/data/[app]/ enthält, und eine .properties-Datei, die einen Hash enthält, von dem ich annehme die Dateien. Die andere Option (unter „Send this Backup“ -> „easy import“ schreibt eine einzelne .TiBkp-Datei, von der ich glaube, dass sie die normalen drei enthält. In jedem Fall ist, wie Sie sagten, Root-Zugriff erforderlich, um die Daten in /data/data wiederherzustellen /[app]/ auf dem Zielgerät.
Jap. Das letztgenannte Format ist für die einfache Übertragung auf z. B. ein anderes Gerät gedacht (und danke, dass Sie die Leute vom ES-Datei-Explorer darauf hingewiesen haben, diese App erkennt diese Dateien jetzt und bietet an, sie von TB öffnen zu lassen, falls installiert). Ich bezog mich eher auf das Format der (unkomprimierten) Datenpakete (XML, SQLite, SQL ...), um herauszufinden, wie man diese manipulieren könnte - und erinnerte mich mittendrin daran, dass das Ziel nicht gerootet war ... Trotzdem , könnte es eine interessante Idee für einen "kundenspezifischen Transfer" zu einem anderen gerooteten Ziel sein.

Antworten (3)

Nachdem ich jetzt mehr über das APK-Dateiformat gelesen habe, denke ich, dass ich meine eigene Frage jetzt sicher mit "es ist unmöglich" beantworten kann.

Eine APK-Datei enthält keine Datenstruktur, die bei der Installation "entpackt" wird, wie die Pakete, die beispielsweise von den meisten Linux-Distributionen verwendet werden. Stattdessen ist ein APK einfach eine eigenständige, neu gekennzeichnete JAR-Datei, die den Bytecode, das Manifest und das Zertifikat der Anwendung und sonst nichts enthält.

Der Inhalt von /data/data/[appname]wird vermutlich vom Anwendungscode erstellt, wenn er zum ersten Mal ausgeführt wird (oder zu einem späteren Zeitpunkt), und es gibt keine Möglichkeit, solche Daten in ein APK einzubetten, sodass das System sie bei der Installation automatisch an das richtige Ziel verschiebt.

Es stimmt nicht, dass ein APK nur den Bytecode, das Manifest und das Zertifikat enthält. Es enthält auch alle Ressourcen und Assets, die von der App verwendet werden, aber sie verbleiben in der APK-Datei, wenn die App installiert wird: Sie werden nicht kopiert, /data/data/es sei denn, die App ist dafür programmiert, dies selbst zu tun.

Sie können das APK einer App immer noch mit Anwendungen wie ES File Explorer , AppMonster oder Titanium Backup erhalten . Aber ich weiß nicht, ob sie Daten sichern, wenn das APK erstellt wird.

Nicht-Root-Apps können kaum Daten enthalten. AppMonster tut dies mit Sicherheit nicht – und was Titanium betrifft, so hat das OP bereits angegeben, dass es nicht seinen Anforderungen entspricht. Für ES bezweifle ich, dass es Daten extrahiert.
Ich habe ES gerade ausprobiert, und es scheint auch keine Daten mit seiner Sicherung zu enthalten. (Oder zumindest, wenn das gesicherte APK auf meinem nicht gerooteten Zielgerät installiert ist, sind die erwarteten Daten nicht vorhanden.) Soweit ich das beurteilen kann, macht das Backup von ES nichts anderes, als ein APK aus /data/ zu kopieren. Apps nach /sdcard/backups.

Gehen Sie in den Play Store und laden Sie ML Manager herunter, um die Apk-Dateien in einen Ordner Ihrer Wahl zu extrahieren. Ich weiß nicht, wie ich die App-Daten darin einbeziehen soll.