Buscar..


Introducción

adb shell abre un shell de Linux en un dispositivo o emulador de destino. Es la forma más potente y versátil de controlar un dispositivo Android a través de adb .

Este tema se dividió de ADB (Android Debug Bridge) debido a que llegó al límite de ejemplos, muchos de los cuales involucraban el comando adb shell .

Sintaxis

  • shell adb [-e escape] [-n] [-tt] [-x] [comando]

Parámetros

Parámetro Detalles
-mi elegir el carácter de escape, o "ninguno"; por defecto '~'
-norte no leer de stdin
-T deshabilitar la asignación de PTY
-t forzar la asignación de PTY
-X deshabilitar códigos de salida remotos y separación stdout / stderr

Envíe texto, tecla presionada y eventos táctiles al dispositivo Android a través de ADB

ejecute el siguiente comando para insertar el texto en una vista con un enfoque (si es compatible con la entrada de texto)

6.0

Enviar texto en SDK 23+

adb shell "input keyboard text 'Paste text on Android Device'"

Si ya está conectado a su dispositivo a través de adb :

input text 'Paste text on Android Device'
6.0

Enviar texto antes del SDK 23

adb shell "input keyboard text 'Paste%stext%son%sAndroid%sDevice'"

No se aceptan espacios como entrada, reemplácelos con% s.

Enviar eventos

Para simular pulsando la tecla de encendido del hardware.

adb shell input keyevent 26

o alternativamente

adb shell input keyevent POWER

Incluso si no tiene una clave de hardware, puede utilizar un keyevent para realizar la acción equivalente

adb shell input keyevent CAMERA

Enviar evento táctil como entrada

adb shell input tap Xpoint Ypoint

Enviar evento swipe como entrada

adb shell input swipe Xpoint1 Ypoint1 Xpoint2 Ypoint2 [DURATION*]

* DURACIÓN es opcional, por defecto = 300ms. fuente

Obtenga puntos X e Y habilitando la ubicación del puntero en la opción de desarrollador.

ADB shell script de ejemplo

Para ejecutar un script en Ubuntu, Create script.sh haga clic con el botón derecho en el archivo, agregue permiso de lectura / escritura y marque el permiso para ejecutar el archivo como programa .

Abra el emulador de terminal y ejecute el comando ./script.sh

Script.sh

 for (( c=1; c<=5; c++ ))
    do  
       adb shell input tap X Y
       echo "Clicked $c times"
       sleep 5s
    done

Para una lista completa de números de eventos

Listar paquetes

Imprime todos los paquetes, opcionalmente solo aquellos cuyo nombre de paquete contiene el texto en <FILTER>.

adb shell pm list packages [options] <FILTER>

All <FILTER>

adb shell pm list packages

Atributos:

-f para ver su archivo asociado.

-i Ver el instalador para los paquetes.

-u para incluir también paquetes desinstalados.

-u También incluye paquetes desinstalados.

Atributos que filtran:

-d para paquetes deshabilitados.

-e para paquetes habilitados.

-s para paquetes del sistema.

-3 para paquetes de terceros.

--user <USER_ID> para un espacio de usuario específico para consultar.

Otorgar y revocar permisos API 23+

Una línea única que ayuda a otorgar o revocar permisos vulnerables.

  • otorgamiento

    adb shell pm grant <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • revocando

    adb shell pm revoke <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • Concesión de todos los permisos de tiempo de ejecución a la vez en la instalación (-g)

    adb install -g /path/to/sample_package.apk
    

Imprimir datos de la aplicación

Este comando imprime todos los datos relevantes de la aplicación:

  • código de versión
  • nombre de la versión
  • permisos concedidos (Android API 23+)
  • etc.
adb shell dumpsys package <your.package.id>

Grabando la pantalla

4.4

Grabación de la pantalla de dispositivos con Android 4.4 (nivel de API 19) y superior:

adb shell screenrecord [options] <filename>
adb shell screenrecord /sdcard/demo.mp4

(presiona Ctrl-C para detener la grabación)

Descarga el archivo desde el dispositivo:

adb pull /sdcard/demo.mp4

Nota: detenga la grabación de la pantalla presionando Ctrl-C, de lo contrario, la grabación se detiene automáticamente a los tres minutos o el límite de tiempo establecido por - --time-limit .

adb shell screenrecord --size <WIDTHxHEIGHT>

Establece el tamaño del video: 1280x720. El valor predeterminado es la resolución de pantalla nativa del dispositivo (si es compatible), 1280x720 si no es así. Para obtener los mejores resultados, use un tamaño compatible con el codificador de codificación avanzada de video (AVC) de su dispositivo.


adb shell screenrecord --bit-rate <RATE>

Establece la tasa de bits de video para el video, en megabits por segundo. El valor predeterminado es 4Mbps. Puede aumentar la velocidad de bits para mejorar la calidad del video, pero al hacerlo se obtienen archivos de películas más grandes. El siguiente ejemplo establece la tasa de bits de grabación a 5Mbps:

adb shell screenrecord --bit-rate 5000000 /sdcard/demo.mp4

adb shell screenrecord --time-limit <TIME>

Establece el tiempo máximo de grabación, en segundos. El valor predeterminado y máximo es 180 (3 minutos).


adb shell screenrecord --rotate

Gira la salida 90 grados. Esta característica es experimental.


adb shell screenrecord --verbose

Muestra información de registro en la pantalla de línea de comandos. Si no configura esta opción, la utilidad no muestra ninguna información mientras se ejecuta.

Nota: Esto podría no funcionar en algunos dispositivos.

4.4

El comando de grabación de pantalla no es compatible con las versiones de Android anteriores a 4.4.

El comando screenrecord es una utilidad de shell para grabar la pantalla de dispositivos con Android 4.4 (nivel de API 19) y superior. La utilidad registra la actividad de la pantalla en un archivo MPEG-4.

Cambio de permisos de archivos usando el comando chmod

Tenga en cuenta que para poder cambiar los envíos de archivos, su dispositivo debe estar rooteado, ¡ su binario no viene con los dispositivos de fábrica!

Convención:

adb shell su -c "chmod <numeric-permisson> <file>"

Permisos numéricos construidos a partir de secciones de usuario, grupo y mundo.

Por ejemplo, si desea que todos puedan cambiar el archivo para que todos puedan leerlo, escribirlo y ejecutarlo, este será su comando:

adb shell su -c "chmod 777 <file-path>"

O

adb shell su -c "chmod 000 <file-path>"

Si intenta denegar cualquier permiso para ello.

1er dígito: especifica el permiso del usuario, 2º dígito : especifica el permiso de grupo, 3º dígito : especifica el permiso del mundo (otros).

Permisos de acceso:

--- :   binary value:   000,  octal value: 0 (none)
--x :   binary value:   001,  octal value: 1 (execute)
-w- :   binary value:   010,  octal value: 2 (write)
-wx :   binary value:   011,  octal value: 3 (write, execute)
r-- :   binary value:   100,  octal value: 4 (read)
r-x :   binary value:   101,  octal value: 5 (read, execute)
rw- :   binary value:   110,  octal value: 6 (read, write)
rwx :   binary value:   111,  octal value: 7 (read, write, execute)

Establecer fecha / hora a través de adb

6.0

El formato SET predeterminado es MMDDhhmm[[CC]YY][.ss] , eso es (2 dígitos cada uno)

Por ejemplo, para configurar el 17 de julio a las 10:10 am, sin cambiar el año actual, escriba:

adb shell 'date 07171010.00'

Consejo 1: el cambio de fecha no se reflejará de inmediato, y se producirá un cambio notable solo después de que el reloj del sistema avance al minuto siguiente.
Puede forzar una actualización adjuntando una TIME_SET intento TIME_SET a su llamada, de esta manera:

adb shell 'date 07171010.00 ; am broadcast -a android.intent.action.TIME_SET'

Consejo 2: para sincronizar el reloj de Android con su máquina local:

Linux:

adb shell date `date +%m%d%H%M%G.%S`

Windows (PowerShell):

$currentDate = Get-Date -Format "MMddHHmmyyyy.ss" # Android's preferred format
adb shell "date $currentDate"

Ambos consejos juntos:

adb shell 'date `date +%m%d%H%M%G.%S` ; am broadcast -a android.intent.action.TIME_SET'
6.0

El formato SET predeterminado es 'YYYYMMDD.HHmmss'

adb shell 'date -s 20160117.095930'

Consejo: para sincronizar el reloj de Android con su máquina local (basada en Linux):

adb shell date -s `date +%G%m%d.%H%M%S`

Opciones de desarrollador abierto

adb shell am start -n com.android.settings/.DevelopmentSettings

Navegará tu dispositivo / emulador a la sección Developer Options .

Generando una transmisión "Boot Complete"

Esto es relevante para las aplicaciones que implementan un BootListener . Prueba tu aplicación matando tu aplicación y luego prueba con:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n your.app/your.app.BootListener

(Reemplace your.package/your.app.BootListener con los valores adecuados).

Ver contenido de almacenamiento externo / secundario

Ver contenido:

adb shell ls \$EXTERNAL_STORAGE
adb shell ls \$SECONDARY_STORAGE

Ver ruta:

adb shell echo \$EXTERNAL_STORAGE
adb shell echo \$SECONDARY_STORAGE

matar un proceso dentro de un dispositivo Android

A veces, el logcat de Android se ejecuta infinitamente con errores provenientes de algún proceso que usted no posee, agotando la batería o dificultando la depuración de su código.

Una forma conveniente de solucionar el problema sin reiniciar el dispositivo es localizar y detener el proceso que causa el problema.

Desde logcat

03-10 11:41:40.010 1550-1627/? E/SomeProcess: ....

Observe el número de proceso: 1550

Ahora podemos abrir una cáscara y matar el proceso. Tenga en cuenta que no podemos matar el proceso de la root .

adb shell

Dentro de la cáscara podemos verificar más sobre el proceso usando

ps -x | grep 1550

Y mátalo si queremos:

kill -9 1550


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow