8 votos

¿Puedo crear un APK a partir de una aplicación instalada y sus datos?

Me gustaría tomar una aplicación instalada, incluyendo sus datos, de un dispositivo Android rooteado y producir a partir de ella un APK adecuado para instalar en un dispositivo Android no rooteado.

¿Es esto posible?

Edición: Las respuestas/comentarios existentes parecen reforzar la idea de que las aplicaciones existentes no admiten la incrustación de los datos de una aplicación dentro de un APK. Tal vez la pregunta más fundamental es, puede un archivo APK incrustado destinado a /data/data/[appname] ¿o se limitan a ser autónomos cuando se instalan?

Notas:

  • Supuse que, de ser posible, esta funcionalidad estaría integrada en una aplicación como Titanium Backup. Titanium Backup puede hacer una copia de seguridad de app+datos en un único archivo, pero ese archivo no es un APK y solo puede ser restaurado por el propio Titanium Backup, lo que no me sirve de nada porque el dispositivo de destino no está rooteado y por tanto no puede ejecutar TB.
  • Las soluciones que requieren el uso del terminal en el teléfono o ADB están bien.

Gracias.

0 votos

Si miras en la carpeta de copias de seguridad de TB notarás que almacena el .apk llano (por lo que al menos se puede tomar eso). Tengo que mirar en los archivos de datos; AFAIR esto eran simplemente propiedades almacenadas, pero no puedo recordar el formato utilizado. Sin embargo, la restauración de los datos en un dispositivo no rooteado es probablemente muy difícil de lograr por la misma razón que la copia de seguridad es: no hay acceso a las carpetas de datos ...

0 votos

@Izzy TB tiene dos métodos de respaldo. El normal almacena tres archivos en el directorio de copia de seguridad - un tar.gz que contiene el APK, un tar.gz que contiene el contenido de /data/data/[app]/, y un archivo .properties que contiene lo que supongo es un hash de los archivos. La otra opción (en "Send this Backup" -> "easy import" escribe un único archivo .TiBkp que creo que contiene los tres normales. De cualquier manera, como has dicho, se requiere acceso Root para restaurar los datos a /data/data/[app]/ en el dispositivo de destino.

0 votos

Yepp. Este último formato está pensado para facilitar la transferencia a, por ejemplo, otro dispositivo (y gracias a que se lo mencioné a la gente del explorador de archivos ES, esa aplicación ahora reconoce esos archivos y ofrece que TB los abra, si está instalada). Me refería más bien al formato de los paquetes de datos (sin comprimir) (XML, SQLite, SQL...) para averiguar cómo se podrían manipular esos -- y justo en medio recordaba que el objetivo no estaba rooteado... Aun así, podría ser una idea interesante para una "transferencia personalizada" a otro rooteado objetivo.

3voto

Ian Renton Puntos 51

Después de haber leído más sobre el formato de archivo APK, creo que ahora puedo responder con seguridad a mi propia pregunta con un "es imposible".

Un archivo APK no contiene una estructura de datos que se "desempaqueta" en la instalación como los paquetes utilizados, por ejemplo, por la mayoría de las distribuciones de Linux. En lugar de ello, un APK es simplemente un archivo JAR autocontenido y reenviado que contiene el código de bytes de la aplicación, el manifiesto y el certificado y nada más.

El contenido de /data/data/[appname] son creados presumiblemente por el código de la aplicación cuando se ejecuta por primera vez (o en algún momento futuro), y no hay forma de incrustar dichos datos en un APK para que el sistema los traslade automáticamente al destino correcto en el momento de la instalación.

0 votos

No es cierto que un APK sólo contenga el código de bytes, el manifiesto y el certificado. También contiene los recursos y activos utilizados por la aplicación, pero estos permanecen en el archivo APK cuando se instala la aplicación: no se copian a /data/data/ a menos que la aplicación esté programada para hacerlo por sí misma.

1voto

air-dex Puntos 484

Todavía puedes obtener el APK de una app con aplicaciones como Explorador de archivos ES , AppMonster o Copia de seguridad en titanio . Pero no sé si hacen una copia de seguridad de los datos cuando se construye el APK.

0 votos

Las aplicaciones que no son root apenas pueden incluir datos. AppMonster seguro que no lo hace -- y en cuanto a Titanium, el OP ya declaró que no se ajusta a sus necesidades. Para ES dudo que extraiga datos.

0 votos

Acabo de probar ES, y tampoco parece incluir los datos con su copia de seguridad. (O al menos, cuando el APK respaldado se instala en mi dispositivo de destino no rooteado, los datos que espero no están allí). Por lo que puedo decir, la copia de seguridad de ES no hace nada más que copiar un APK de /data/apps a /sdcard/backups.

0voto

gkeeg Puntos 41

Ve a la play store y descarga ML Manager para extraer los archivos Apk en una carpeta de tu elección. No sé cómo incluir los datos de la aplicación en esto.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X