usar telefono tarjeta samsung que puedo porque pasar para mover memoria los las interno interna instalar hacer directamente descarguen convertir como cambiar archivos aplicaciones almacenamiento ala android adb

android - telefono - ¿Es posible ver los datos de la aplicación desde el shell adb de la misma manera que lo veo al montar la tarjeta SD?



porque no puedo mover aplicaciones ala tarjeta sd (3)

Estoy probando una aplicación de Android.
Me gustaría vigilar el contenido de

/sdcard/Android/data/com.myapplication

mientras que la aplicación se está ejecutando.
Pero mi aplicación no funciona correctamente si la tarjeta sd está montada como unidad de disco en la PC (accede a fotos y videos).
Así que pensé que podría usar adb shell. Pero no me deja acceder a esa misma carpeta:

ls /sdcard/Android/data/com.myapplication /sdcard/Android/data/com.myapplication: Permission denied

Buscando en Stack Overflow, encontré esta manera de ver los datos de la aplicación a través de la shell adb:

run-as com.myapplication

Y al hacerlo me encuentro en la carpeta.

/data/data/com.myapplication

Lo que me confunde es que los datos que veo aquí son diferentes de los que veo al navegar por el contenido de la tarjeta sd a través de la PC.

$ ls ls files databases shared_prefs lib

Veo en los archivos algo que también estaba en la carpeta sdcard Android / data / com.myapplication, pero no en lo que estaba buscando. Además, todas las demás carpetas son diferentes.
¿Hay una correlación entre esto?

/data/data/com.myapplication

carpeta accesible a través de adb y la

/sdcard/Android/data/com.myapplication

carpeta accesible a través de PC?
¿Hay alguna manera de ver en adb shell los archivos presentes en este último?


Como regla general, los archivos que se encuentran en el Internal storage y almacenados por su aplicación (de forma predeterminada, no se pueden WORLD_READABLE ) solo estarán disponibles para que los lea su aplicación. Cuando intente pull estos archivos utilizando adb pull , obtendrá un permiso denegado en un dispositivo NO rooteado. Hay una manera de evitar esto, explicaré más adelante. Los archivos en External storage por otro lado, están disponibles para el usuario y para todas las demás aplicaciones para leer. así que depende de lo que estés buscando.

Ahora, para leer archivos en su almacenamiento internal ( /data/data/com.app.name ) no puede leer estos archivos directamente, pero lo que puede hacer es moverlos al almacenamiento external y luego leerlos desde allí de esta manera.

adb shell "run-as com.yourappName cat /data/data/com.yourappName/files/myfile.txt > /sdcard/Downloads/myfile.txt"

Luego, puede extraer el archivo del almacenamiento externo sin problemas de permisos.

adb pull /sdcard/Downloads/myfile.txt

Si no está seguro de qué archivo o si desea explorar todos los archivos, utilice el shell para explorar todos los archivos de su aplicación.

adb shell run-as yourappPackageName cd /data/data/youappPackageName ls -all


He podido obtener el DB de Sqlite que la aplicación está utilizando con este comando de Adb:

adb exec-out run-as xxx.xxx.xxx.xxx cat "/data/data/xxx.xxx.xxx.xxx/databases/databasefile.db" > %userprofile%/Desktop/databasefile.db

Donde xxx.xxx.xxx.xxx es el bundleId de su aplicación de Android, y databasefile.db es el nombre de la base de datos de Sqlite

Así que me imagino que puede obtener cualquier archivo existente de la aplicación, saber dónde está y usar el comando adb exec-out run-as xxx.xxx.xxx.xxx


Puede acceder a él a través de la utilidad que se publicó anteriormente en un blog. Es una utilidad java a través de la cual puede obtener todas las carpetas en la carpeta de datos de su aplicación con solo dar el nombre del paquete de su aplicación. Solo la aplicación necesita ser debuggable.

Extraer archivos de Android

Realmente funciona