Intentando extraer un solo archivo usando
adb pull /data/data/com.corp.appName/files/myFile.txt myFile.txt
falla con
failed to copy '/data/data/com.corp.appName/files/myFile.txt myFile.txt' to 'myFile.txt': Permission denied
a pesar de que la depuración USB está habilitada en el dispositivo.
Podemos dar la vuelta al problema por la ruta arcaica
adb shell
run-as com.corp.appName
cat files/myFile.txt > myFile.txt
pero esto es difícil de manejar para más de un archivo.
¿Cómo puedo extraer el directorio /data/data/com.corp.appName/files a mi MacBook?
Hacer esto ya sea directamente o mediante un tránsito en `/ storage / sdcard0 / myDir (desde donde puedo continuar con Android File Transfer) está bien.
Comentario adicional
Puede ser que solo corra
adb backup -f myFiles com.corp.appName
generará los archivos que estoy buscando. En ese caso, estoy buscando una manera de descomprimir / descomprimir la copia de seguridad resultante.
Respuestas:
adb backup escribirá un archivo específico de Android:
Este archivo se puede convertir a formato tar usando:
Referencia:
http://nelenkov.blogspot.ca/2012/06/unpacking-android-backups.html
Busque "Actualizar" en ese enlace.
Alternativamente, use el extractor de respaldo de Android para extraer archivos del archivo de respaldo de Android (
.ab
).fuente
bs=24 skip=1
es mucho más rápido quebs=1 skip=24
(en mi sistema, 38,6 MB / s frente a 1,7 MB / s) :)dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
(de la fuente anterior)dd
comando en mi MacBook en el trabajo. En cambio, utilizojava -jar ./abe.jar unpack data.ab data.tar
. Puede descargar la utilidad abe desde sourceforge.net/projects/adbextractor/files/?source=navbarandroid:allowBackup="false"
dd if=myAndroidBackup.ab bs=24 skip=1 | openssl zlib -d | tar -x
Tuve el mismo problema pero lo resolví ejecutando lo siguiente:
Después de esto puedes correr
fuente
Esto es lo que funcionó para mí:
Estoy imprimiendo la base de datos directamente en un archivo local.
fuente
adb shell
------ dentro del shell ejecutarrun-as com.example.test
------ dentro del shell ejecutarcat ...db > /mnt/sdcard/file.db
------adb pull /mnt/sdcard/file.db .
------ end (lo siento, los saltos de línea no funcionan)adb shell
no funcionó para mí, ¡pero seguir esta respuesta y usarloadb exec-out
funcionó!En MacOSX, al combinar las respuestas de Calaf y Ollie Ford, lo siguiente funcionó para mí.
En la línea de comando (asegúrese de que adb esté en su camino, el mío estaba en ~ / Library / Android / sdk / platform-tools / adb) y con su dispositivo Android conectado y en modo de depuración USB, ejecute:
Su dispositivo Android le pedirá permiso para hacer una copia de seguridad de sus datos. Seleccione "COPIA DE SEGURIDAD DE MIS DATOS"
Espere unos momentos.
La copia de seguridad del archivo aparecerá en el directorio donde ejecutó adb.
Ahora ejecuta:
Ahora tendrá un archivo backup.tar que puede descomprimir así:
Y vea todos los archivos almacenados por su aplicación.
fuente
adb backup
losdd
pasos de conversión de alquitrán y ambos no proporcionan ningún estado mientras funcionan y pueden tardar unos minutos si tiene muchos datos. ¡Se paciente!Las versiones más recientes de Android Studio incluyen el Explorador de archivos del dispositivo que me parece un método de GUI útil para descargar archivos de mi Nexus 7 de desarrollo.
Debe asegurarse de haber habilitado la depuración USB en el dispositivo
Interactúe con el contenido del dispositivo en la ventana del explorador de archivos. Haga clic con el botón derecho en un archivo o directorio para crear un nuevo archivo o directorio, guarde el archivo o directorio seleccionado en su máquina, cargue, elimine o sincronice. Haz doble clic en un archivo para abrirlo en Android Studio.
Android Studio guarda los archivos que abres de esta manera en un directorio temporal fuera de tu proyecto. Si realiza modificaciones en un archivo que abrió con el Explorador de archivos del dispositivo y desea guardar los cambios en el dispositivo, debe cargar manualmente la versión modificada del archivo en el dispositivo.
Documentación completa
fuente
Puede utilizar este script de shell a continuación. También puede extraer archivos del caché de la aplicación, no como la
adb backup
herramienta:Entonces puedes usarlo así:
fuente
rm /sdcard/
sustituyes, afortunadamente no es así-rf
.Si está utilizando una máquina Mac y un teléfono Samsung, esto es lo que debe hacer (ya
run-as
que no funciona en Samsung yzlib
no funciona en Mac)Realice una copia de seguridad del directorio de datos de su aplicación
adb backup -f /Users/username/Desktop/data.ab com.example
Se le pedirá una contraseña para cifrar en su teléfono, no ingrese ninguna. Simplemente toque "Hacer una copia de seguridad de mis datos". Consulte ¿Cómo realizar una copia de seguridad?
Una vez que se haya realizado una copia de seguridad con éxito, verá el
data.ab
archivo en su escritorio. Ahora necesitamos convertir esto atar
formato.Utilice Android Backup Extractor para esto. Descarga | Código fuente
Descárguelo y verá el
abe.jar
archivo. Agregue esto a su variable PATH.Ejecute esto para generar el archivo tar :
java -jar abe.jar unpack /Users/username/Desktop/data.ab /Users/username/Desktop/data.tar
Extraiga el archivo data.tar para acceder a todos los archivos
fuente
data.tar
justo se extrae adata.tar.cpgz
@henryEsta respuesta se basa en mi experiencia con otras respuestas y comentarios en las respuestas. Mi esperanza es poder ayudar a alguien en una situación similar.
Estoy haciendo esto en OSX a través de la terminal.
Anteriormente, la respuesta de Vinicius Avellar funcionó muy bien para mí. La mayor parte del tiempo solo necesitaba la base de datos del dispositivo desde una aplicación de depuración.
Hoy tuve un caso de uso en el que necesitaba varios archivos privados . Terminé con dos soluciones que funcionaron bien para este caso.
Aquí está mi script para extraer varios archivos privados que compartiré con usted, el lector, que también está investigando esta increíble pregunta;):
Gist: https://gist.github.com/davethomas11/6c88f92c6221ffe6bc26de7335107dd4
Volver al método 1 , descifrar una copia de seguridad con Android Backup Extractor
Estos son los pasos que tomé en mi Mac y los problemas que encontré:
Primero puse en cola una copia de seguridad (y establecí una contraseña para cifrar mi copia de seguridad, mi dispositivo la requería):
En segundo lugar, descargué solo abe.jar desde aquí: https://sourceforge.net/projects/adbextractor/files/abe.jar/download
Luego corrí:
En este punto recibí un mensaje de error. Debido a que mi archivo está encriptado, Java me dio un error que necesitaba para instalar algunas bibliotecas de políticas de seguridad.
Por último, acabo de ejecutar ( después de ejecutar el comando anterior nuevamente )
Ahora es importante tener en cuenta que si puedes correr como y gato, es mucho más rápido. Uno, solo obtiene los archivos que desea y no la aplicación completa. Dos, cuantos más archivos (+ cifrado para mí), la transferencia es más lenta. Entonces, saber hacerlo de esta manera es importante si no tiene run-as en OSX, pero el script debe ir primero a una aplicación de depuración.
Eso sí, lo escribí hoy y lo probé varias veces, ¡así que notifícame de cualquier error!
fuente
Después de configurar los permisos correctos agregando el siguiente código:
adb pull
funciona como se desee.ver File.setReadable ()
fuente
A partir del script de Dave Thomas, he podido escribir mi propia solución para superar 2 problemas:
Este es mi script, que copia los datos de la aplicación a la tarjeta SD y luego lo extrae
fuente
Similar a la respuesta de Tamas , aquí hay una sola línea para Mac OS X para recuperar todos los archivos de la aplicación
your.app.id
desde su dispositivo y guardarlos en (en este caso)~/Desktop/your.app.id
:-d
para extraer del emuladorfuente
Copia de seguridad de los datos del juego con apk . Turrón Oneplus 2.
fuente
adb backup -f myapp.ab -apk com.myapp # backup on one device
adb restore myapp.ab # restore to the same or any other device
Sí exactamente. Curiosamente, también necesita el archivo para tener el
x
bit configurado. (al menos en Android 2.3)chmod 755
Todo el camino hacia abajo funcionó para copiar un archivo (pero debe revertir los permisos después, si planea continuar usando el dispositivo).fuente
tu puedes hacer:
fuente