¿Puedo construir un APK desde una aplicación instalada y sus datos?

8

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

es posible?

Editar: las respuestas / comentarios existentes parecen reforzar la idea de que las aplicaciones existentes no admiten la incrustación de datos de una aplicación dentro de un APK. Quizás la pregunta más fundamental es, ¿ puede un APK incrustar archivos destinados /data/data/[appname]o están restringidos a ser autónomos cuando se instalan?

Notas:

  • Supuse que, si fuera posible, esta funcionalidad se integraría en una aplicación como Titanium Backup. Titanium Backup puede hacer una copia de seguridad de la aplicación + datos en un solo archivo, pero ese archivo no es un APK y solo puede ser restaurado por Titanium Backup, lo que no es una ayuda para mí ya que el dispositivo de destino no está rooteado y, por lo tanto, no puede ejecutar TB.
  • Las soluciones que requieren el uso del terminal en el teléfono o ADB están bien.

Gracias.

Ian Renton
fuente
Si observa la carpeta de respaldo de TB, notará que almacena el .apkplano (por lo que al menos puede tomar eso). Necesito mirar en los archivos de datos; AFAIR esto eran simplemente propiedades almacenadas, pero no recuerdo el formato utilizado. Sin embargo, la restauración de datos en un dispositivo no rooteado es probablemente muy difícil de lograr por la misma razón que la copia de seguridad es: sin acceso a las carpetas de datos ...
Izzy
@Izzy TB tiene dos métodos de respaldo. Su archivo 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 supongo que es un hash de Los archivos. La otra opción (en "Enviar esta copia de seguridad" -> "importación fácil" escribe un único archivo .TiBkp que creo que contiene los tres normales. De cualquier manera, como dijiste, se requiere acceso de root para restaurar los datos a / data / data / [app] / en el dispositivo objetivo.
Ian Renton
Sipp. El último formato está destinado a una fácil transferencia, por ejemplo, a otro dispositivo (y gracias por mencionar esto a las personas del explorador de archivos ES, esa aplicación ahora reconoce esos archivos y ofrece que TB los abra, si está instalado). Me estaba refiriendo al formato de los paquetes de datos (sin comprimir) (XML, SQLite, SQL ...) para descubrir cómo uno podía manipularlos, y justo en el medio recordaba que el objetivo no estaba enraizado ... Todavía , podría ser una idea interesante para una "transferencia personalizada" a otro objetivo rooteado .
Izzy

Respuestas:

3

Después de leer más sobre el formato de archivo APK, creo que ahora puedo responder con seguridad mi propia pregunta con "es imposible".

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

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

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

Todavía puede obtener el APK de una aplicación con aplicaciones como ES File Explorer , AppMonster o Titanium Backup . Pero no sé si hacen una copia de seguridad de los datos cuando se construye el APK.

air-dex
fuente
Las aplicaciones no root apenas pueden incluir datos. AppMonster seguro que no, y en cuanto a Titanium, el OP ya declaró que no se ajusta a sus necesidades. Para ES dudo que extraiga datos.
Izzy
Acabo de probar ES, y tampoco parece incluir datos con su copia de seguridad. (O al menos, cuando el APK respaldado está instalado en mi dispositivo de destino no rooteado, los datos que espero no están allí). Hasta donde puedo decir, la copia de seguridad de ES no hace más que copiar un APK de / data / aplicaciones a / sdcard / backups.
Ian Renton
0

Vaya a Play Store y descargue ML Manager para extraer los archivos Apk en una carpeta de su elección. No sé cómo incluir los datos de la aplicación en esto.

gkeeg
fuente