Puis-je créer un APK à partir d'une application installée et de ses données?

8

Je voudrais prendre une application installée, y compris ses données, à partir d'un appareil Android enraciné et en produire un APK adapté à l'installation sur un appareil Android non enraciné.

Est-ce possible?

Modifier: les réponses / commentaires existants semblent renforcer l'idée que les applications existantes ne prennent pas en charge l'intégration des données d'une application dans un APK. La question la plus fondamentale est peut-être de savoir si un fichier APK incorporé est destiné à /data/data/[appname], ou est-il limité à être autonome lorsqu'il est installé?

Remarques:

  • J'ai supposé que, si c'était possible, cette fonctionnalité serait intégrée à une application telle que Titanium Backup. Titanium Backup peut sauvegarder les données app + dans un seul fichier, mais ce fichier n'est pas un APK et ne peut être restauré que par Titanium Backup lui-même - ce qui ne m'aide pas car l'appareil de destination n'est pas enraciné et ne peut donc pas exécuter TB.
  • Les solutions qui nécessitent l'utilisation du terminal sur le téléphone ou ADB sont très bien.

Merci.

Ian Renton
la source
Si vous regardez dans le dossier de sauvegarde de TB, vous remarquerez qu'il stocke la .apkplaine (vous pouvez donc au moins le prendre). J'ai besoin de regarder dans les fichiers de données; AFAIR, il s'agissait simplement de propriétés stockées, mais je ne me souviens pas du format utilisé. Cependant, la restauration des données sur un appareil non rooté est probablement très difficile à réaliser pour la même raison que la sauvegarde: aucun accès aux dossiers de données ...
Izzy
@Izzy TB a deux méthodes de sauvegarde. Son fichier normal stocke trois fichiers dans le répertoire de sauvegarde - un tar.gz contenant l'APK, un tar.gz contenant le contenu de / data / data / [app] / et un fichier .properties contenant ce que je suppose être un hachage de les fichiers. L'autre option (sous "Envoyer cette sauvegarde" -> "importation facile" écrit un seul fichier .TiBkp qui, je crois, contient les trois normales. Dans les deux cas, comme vous l'avez dit, un accès root est requis pour restaurer les données dans / data / data / [app] / sur le périphérique cible.
Ian Renton
Yepp. Ce dernier format est destiné à être facilement transféré, par exemple, vers un autre appareil (et merci de l'avoir mentionné aux personnes de l'explorateur de fichiers ES, cette application reconnaît désormais ces fichiers et propose de les ouvrir par TB, le cas échéant). Je faisais plutôt référence au format des paquets de données (non compressés) (XML, SQLite, SQL ...) pour comprendre comment on pouvait les manipuler - et juste au milieu, je me souvenais que la cible n'était pas enracinée ... , cela pourrait être une idée intéressante pour un "transfert personnalisé" vers une autre cible enracinée .
Izzy

Réponses:

3

Après avoir lu plus sur le format de fichier APK, je pense que je peux maintenant répondre en toute sécurité à ma propre question avec "c'est impossible".

Un fichier APK ne contient pas de structure de données qui est «décompressée» lors de l'installation comme les packages utilisés par exemple par la plupart des distributions Linux. Au lieu de cela, un APK est simplement un fichier JAR autonome et rebadgé qui contient le bytecode, le manifeste et le certificat de l'application et rien d'autre.

Le contenu de /data/data/[appname]est vraisemblablement créé par le code de l'application lors de sa première exécution (ou à un moment ultérieur), et il n'y a aucun moyen d'incorporer ces données dans un fichier APK afin que le système les déplace automatiquement vers la bonne destination au moment de l'installation.

Ian Renton
la source
Ce n'est pas vrai qu'un APK ne contient que le bytecode, le manifeste et le certificat. Il contient également les ressources et les actifs utilisés par l'application, mais ils restent dans le fichier APK lorsque l'application est installée: ils ne sont pas copiés /data/data/sauf si l'application est programmée pour le faire elle-même.
Dan Hulme
1

Vous pouvez toujours obtenir l'APK d'une application avec des applications comme ES File Explorer , AppMonster ou Titanium Backup . Mais je ne sais pas s'ils sauvegardent les données lors de la construction de l'APK.

air-dex
la source
Les applications non root peuvent difficilement inclure des données. AppMonster ne le fait certainement pas - et comme pour Titanium, l'OP a déjà déclaré qu'il ne correspond pas à ses besoins. Pour ES, je doute qu'il extrait des données.
Izzy
Je viens d'essayer ES, et il ne semble pas non plus inclure de données avec sa sauvegarde. (Ou du moins, lorsque l'APK sauvegardé est installé sur mon appareil cible non rooté, les données que j'attends ne sont pas là.) Pour autant que je sache, la sauvegarde d'ES ne fait rien de plus que de copier un APK depuis / data / applications vers / sdcard / sauvegardes.
Ian Renton
0

Allez sur le Play Store et téléchargez ML Manager pour extraire les fichiers Apk dans un dossier de votre choix. Je ne sais pas comment y inclure les données de l'application.

gkeeg
la source