Posso creare un APK da un'app installata e dai suoi dati?


8

Vorrei prendere un'app installata, compresi i suoi dati, da un dispositivo Android rootato e produrre da esso un APK adatto per l'installazione su un dispositivo Android non rootato.

È possibile?

Modifica: le risposte / i commenti esistenti sembrano rafforzare l'idea che le app esistenti non supportano l'incorporamento dei dati di un'app all'interno di un APK. Forse la domanda più fondamentale è: un APK può incorporare file destinati /data/data/[appname]o è limitato all'autosufficienza quando installato?

Appunti:

  • Ho ipotizzato che, se fosse possibile, questa funzionalità sarebbe stata integrata in un'app come Titanium Backup. Titanium Backup può eseguire il backup di app + dati su un singolo file, ma quel file non è un APK e può essere ripristinato solo da Titanium Backup stesso, il che non mi aiuta poiché il dispositivo di destinazione non è rootato e quindi non può eseguire TB.
  • Le soluzioni che richiedono l'uso del terminale sul telefono o ADB vanno bene.

Grazie.


Se guardi nella cartella di backup di TB, noterai che memorizza il .apkpiano (quindi almeno puoi prenderlo). Ho bisogno di guardare nei file di dati; AFAIR si trattava semplicemente di proprietà memorizzate, ma non ricordo il formato utilizzato. Tuttavia, ripristinare i dati su un dispositivo non rootato è probabilmente molto difficile da ottenere per lo stesso motivo del backup: nessun accesso alle cartelle di dati ...
Izzy

@Izzy TB ha due metodi di backup. Il suo normale archivia tre file nella directory di backup: un tar.gz contenente l'APK, un tar.gz contenente il contenuto di / data / data / [app] / e un file .properties contenente quello che presumo sia un hash di i file. L'altra opzione (in "Invia questo backup" -> "importazione semplice" scrive un singolo file .TiBkp che credo contenga i tre normali. In entrambi i casi, come hai detto, è necessario l'accesso root per ripristinare i dati in / data / data / [app] / sul dispositivo di destinazione.
Ian Renton,

YEPP. Quest'ultimo formato è progettato per un facile trasferimento, ad esempio, su un altro dispositivo (e grazie per averlo menzionato alle persone di ES File Explorer, che l'app ora riconosce quei file e offre di averli aperti da TB, se installato). Mi riferivo piuttosto al formato dei pacchetti di dati (non compressi) (XML, SQLite, SQL ...) per capire come si potevano manipolare quelli - e proprio nel mezzo ricordavo che il bersaglio non era rootato ... , potrebbe essere un'idea interessante per un "trasferimento personalizzato" verso un altro target radicato .
Izzy

Risposte:


3

Dopo aver letto di più sul formato di file APK, penso che ora posso rispondere in sicurezza alla mia domanda con "è impossibile".

Un file APK non contiene una struttura di dati che è "spacchettata" al momento dell'installazione come i pacchetti utilizzati, ad esempio, dalla maggior parte delle distribuzioni Linux. Invece, un APK è semplicemente un file JAR autonomo e rigenerato che contiene il bytecode, manifest e certificato dell'applicazione e nient'altro.

I contenuti di /data/data/[appname]sono presumibilmente creati dal codice dell'applicazione quando viene eseguito per la prima volta (o in un momento futuro) e non c'è modo di incorporare tali dati in un APK in modo che il sistema li sposti automaticamente nella destinazione corretta al momento dell'installazione.


Non è vero che un APK contenga solo il bytecode, manifest e certificato. Contiene inoltre tutte le risorse e le risorse utilizzate dall'app, ma rimangono nel file APK quando l'app è installata: non vengono copiate a /data/data/meno che l'app non sia programmata per farlo da sola.
Dan Hulme,

1

Puoi ancora ottenere l'APK di un'app con applicazioni come ES File Explorer , AppMonster o Titanium Backup . Ma non so se eseguano il backup dei dati quando viene creato l'APK.


Le app non root difficilmente possono includere dati. AppMonster sicuramente no - e per quanto riguarda Titanium, l'OP ha già dichiarato di non soddisfare le sue esigenze. Per ES dubito che estrae dati.
Izzy

Ho appena provato ES, e non sembra includere nemmeno i dati con il suo backup. (O almeno, quando l'APK di cui è stato eseguito il backup è installato sul mio dispositivo di destinazione non rootato, i dati che mi aspetto non siano presenti.) Per quanto ne so, il backup di ES non fa altro che copiare un APK da / data / app su / sdcard / backup.
Ian Renton,

0

Vai sul Play Store e scarica ML Manager per estrarre i file Apk in una cartella a tua scelta. Non so come includere i dati dell'app in questo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.