Me conecté a mi dispositivo en vivo usando el adb y los siguientes comandos:
C:\>adb -s HT829GZ52000 shell
$ ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.trout.rc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
$ cd data
cd data
$ ls
ls
opendir failed, Permission denied
Me sorprendió ver que tengo acceso denegado. ¿Cómo es que no puedo navegar por los directorios usando la línea de comandos como esta?
¿Cómo obtengo acceso de root en mi teléfono?
Respuestas:
Hay dos cosas para recordar si desea explorar todo en su dispositivo.
adb root
fuente
A partir del nivel de API 8 (Android 2.2), para la aplicación depurable (la creada por Android Studio todo el tiempo a menos que se solicite la versión de lanzamiento), puede usar el
run-as
comando de shell para ejecutar un comando o ejecutable como un usuario / aplicación específica o simplemente cambie al UID de su aplicación para que pueda acceder a su directorio de datos .Listar el contenido del directorio de yourapp:
Cambie al UID de com.yourapp y ejecute todos los comandos adicionales usando ese uid (hasta que llame
exit
):Nota 1 : hay un problema conocido con algunos teléfonos HTC Desire. Debido a un propietario / permisos no estándar del
/data/data
directorio, elrun-as
comando no se ejecuta en esos teléfonos.Nota 2 : Como se señaló en los comentarios de @Avio:
run-as
tiene problemas también con los teléfonos Samsung Galaxy S que ejecutan Cyanogenmod en cualquier versión (de 7 a 10.1) porque en esta plataforma/data/data
es un enlace simbólico a/datadata
. Una forma de resolver el problema es reemplazar el enlace simbólico con el directorio real (desafortunadamente, esto generalmente requiere acceso de root).fuente
run-as com.mypackage
. El problema con el que me encontré essqlite3 /data/data/com.mypackage/databases/mydb
"sqlite3: permiso denegado". ¿Sqlite3 solo puede ejecutarse por root?antes de comenzar, ¿tienes un teléfono rooteado ? si no, sugiero que es hora de que hagas el salto. El 99% de los tutoriales que lo ayudan a hacer esto requieren que tenga un teléfono rooteado (sé que b / c pasé aproximadamente una hora buscando una manera de hacerlo sin tener un teléfono rooteado ... no pude encontrar ninguno ... ) también si lo piensa, su iPhone también debe estar rooteado para hacer esta misma tarea. Entonces es totalmente razonable. Más sobre el enraizamiento al final de la respuesta.
desde su tipo de línea de comando:
esto lo lleva a su línea de comando de shell de Android (debería ver algo como esto:
shell@android:/ $
ahora escriba:Esto debería llevarlo directamente al directorio de datos de
com.domain.yourapp
:si no es así (es decir, si obtiene un error), entonces probablemente no tenga un teléfono rooteado o no haya utilizado sus privilegios de usuario root. Para usar sus privilegios de usuario root, escriba
su
en la línea de comando adb y vea qué sucede, si obtiene un error, entonces su teléfono no está rooteado. Si no es así, rootearlo primero y luego continuar con estas instrucciones.desde allí puede escribir
ls
y verá todos los directorios, incluido el dbs:después de eso, puede usar sqlite3 para navegar por la base de datos ... si no lo tiene instalado (puede averiguarlo escribiendo
sqlite3
, si lo tienecommand not found
, tendrá que instalarlo. Para instalar sqlite, siga las instrucciones aquí .sobre el enraizamiento: si nunca ha rooteado su teléfono antes, y le preocupa que lo arruine, puedo decirle con plena confianza que no hay nada de qué preocuparse. Hay toneladas de tutoriales rápidos y fáciles de enrutamiento de teléfonos para casi todos los modelos nuevos y antiguos, y puedes rootear tu teléfono incluso si tienes una Mac (rooteé mi s3 con mi Mac).
fuente
run-as
trabajar. Acabo de probarlo en un Galaxy Nexus S. de producciónbuild the application as debuggable (either by building it with the Eclipse, or ant debug command)
pueden sonar triviales para ti, pero me intimidan un poco. Supongo que mi respuesta es más para las personas que se sienten cómodas rooteando sus teléfonos Android, pero que no conocen bien el mundo de desarrollo de Android. Pero me alegro de que tengamos esta discusión. Quiero que los lectores de mi respuesta estén al tanto de las otras alternativas que no son de enraizamiento$ adb shell
$ cd / datos
$ ls
opendir falló, permiso denegado
Usted debe hacer esto:
¡OKAY!
fuente
Tuve un problema similar al intentar operar en un Samsung Galaxy S. rooteado. Emitir un comando desde el shell de la computadora
falla con un mensaje "no se puede ejecutar como root en las compilaciones de producción". Aquí hay un método simple que permite convertirse en root.
En lugar del anterior, emita los siguientes dos comandos uno tras otro
Después del primer comando, si la solicitud ha cambiado de '>' a '$' como se muestra arriba, significa que ha ingresado al entorno adb shell. Si posteriormente la solicitud ha cambiado a '#' después de emitir el segundo comando, eso significa que ahora es root. Ahora, como root, puedes hacer lo que quieras con tu dispositivo.
Para volver al shell 'seguro', emita
Verá que vuelve a aparecer el mensaje '$', lo que significa que está en el shell adb como usuario y no como root.
fuente
adb shell + su
resolvieron el molesto permiso para siempre. Tuve un problemasu: not found
con Android 4.3 pero desde que actualicé a 4.4.2 el problema desapareció. 4.3 parece tener problemas.Tuve muchos problemas con esto también. Todavía no entiendo completamente el permiso y la ejecución de la raíz, pero esto funcionó para mí (una de las respuestas anteriores en parte) para copiar el archivo de base de datos de / data / data / [nombre del paquete] /databases/my_db.db. Ejecutar shell root , o su in shell por alguna razón no funcionó, ni copiar el archivo db (aunque podría navegar al directorio), ni sqlite3 .
Entonces, esto funcionó! En el símbolo del sistema de DOS:
Ahora vaya al directorio SDCARD y obtenga su archivo db_copy.db. Incluso eso estaba oculto, pero logré enviarlo por correo electrónico. De vuelta en Windows, pude abrir un archivo db con SQLite Database Browser. :)
fuente
Los siguientes son los dos pasos para obtener acceso de root:
fuente
las compilaciones de producción no pueden ingresar / data / app
podría necesitar cambiar al propietario correcto para operarlo.
fuente
El problema podría ser que necesitamos dar acceso a la raíz adb específicamente en las opciones de desarrollo en los últimos CM. Esto es lo que hice.
después de alterar las opciones de desarrollo ...
fuente
Si conoce el paquete de la aplicación, puede
cd
acceder directamente a esa carpeta.p.ej
cd data/data/com.yourapp
esto lo colocará en un directorio
read/writable
para que pueda cambiar los archivos según sea necesario. Como la carpeta es la misma enemulator
, puede usarla para obtener la ruta de la carpeta.fuente
Si solo quiere ver sus DB & Tables, entonces la forma más sencilla es usarlo
Stetho
. Muy buena herramienta para todos los desarrolladores de Android que usanSQLite
buit byFacobook developed
.Steps to use the tool
Ahora, cree su aplicación y cuando la aplicación se esté ejecutando, puede explorar su base de datos de aplicaciones abriendo Chrome en la URL:
Las capturas de pantalla de la misma son las siguientes:
Espero que esto ayude a todos! :)
fuente
Esto funciona si su dispositivo Android está rooteado por algún medio (no estoy seguro si funciona para no rooteado).
adb shell
- acceder al shellsu
- Conviértete en el superusuario.Ahora puede leer todos los archivos en todos los directorios.
fuente
sin rootear el dispositivo, puede acceder a los archivos mediante la siguiente captura de pantalla de cmd:
inicie el adb usando cmd desde la carpeta de herramientas de plataforma de acuerdo con su usuario
puede estar en otra carpeta depende de dónde lo instaló.
Mostrar los dispositivos de trabajo.
por ejemplo, la respuesta del comando es
escribe el comando
se abrirá en
4.Acceso a los archivos, enumere todos los archivos
y así sucesivamente cambiar el directorio a cualquier otro lugar como la carpeta de datos
fuente
su
) no funciona / no está permitido. Pruebas con Android 4.3.Cuando está en el directorio de shell para el dispositivo. Solo corre
Entonces deberías poder acceder a los datos / carpeta.
fuente