# Android Debug Bridge (adb)

Conexión a dispositivo vía red.

```shell
# Opción 1
## Desde un equipo con Windows conectado al dispositivo mediante USB,
## habilitamos la conexión ADB hacia el dispositivo móvil vía red
.\adb.exe tcpip 5555
## Conexión ADB  vía red al dispositivo desde equipo con Linux/Unix
adb connect <device-ip-address>:5555

# Opción 2
## Desde el dispositivo móvil (rooteado), mediante una terminal (por ejemplo Termux), 
## habilitamos la conexión ADB hacia el dispositivo móvil vía red
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
## Conexión ADB vía red al dispositivo desde equipo con Linux/Unix
adb connect <device-ip-address>:5555
```

Listar dispositivos conectados.

```shell
adb devices -l
```

Instalación de aplicación.

```shell
adb install app.apk
```

Obtener listado de aplicaciones instaladas.

```shell
adb shell pm list packages
```

Obtener listado de aplicaciones de terceros instaladas.

```sh
adb shell pm list packages -3 -U --show-versioncode | sort
```

Obtener nombre de aplicación en ejecución.

```sh
adb shell "dumpsys activity activities | grep VisibleActivityProcess"
```

Obtener listado de aplicaciones en ejecución.

```sh
adb shell top -m 10 -q
```

Iniciar una aplicación.

```sh
adb shell monkey -p <app-package-name> -c android.intent.category.LAUNCHER 1
```

Cerrar una aplicación.

```shell
adb shell am force-stop <app-package-name>
```

Desinstalación de una aplicación.

```shell
adb shell pm list packages
adb uninstall <app-package-name>
```

Iniciar shell interactiva.

```shell
adb shell
```

Ejecutar comando sin iniciar shell interactiva.

```shell
adb shell "<shell-command>"
```

Copiar archivo al dispositivo.

```shell
adb push <local-file> <destination-directory>
```

Copiar archivo desde el dispositivo.

```shell
adb pull <remote-file> <local-file>
```

Obtener información de una aplicación.

```shell
adb shell pm list packages
adb shell pm dump <app-package-name>
```

Obtener ruta del archivo APK de una aplicación.

```shell
adb shell pm list packages
adb shell pm path <app-package-name>
```

Realizar una captura de pantalla (screenshot).

```shell
# Guarda captura de pantalla en dispositivo
adb shell -p "<destination-directory>/screenshot.png"

# Guarda captura de pantalla en nuestro equipo
adb exec-out screencap -p > screenshot.png
```

Grabar la pantalla del dispositivo (video).

```shell
# General
adb shell screenrecord "<destination-directory>/screenrecord.mp4"

# Grabar la pantalla del dispositivo, copiar video a 
# nuestro equipo y borrarlo desde el dispositivo
adb shell screenrecord "/sdcard/screenrecord.mp4"
adb pull "/sdcard/screenrecord.mp4"
adb shell rm "/sdcard/screenrecord.mp4"
```

Obtener versión de Android.

```shell
adb shell getprop ro.build.version.release
```

Obtener versión de API level.

```shell
adb shell getprop ro.build.version.sdk
```

Obtener build number.

```sh
adb shell getprop ro.build.display.id
```

Obtener build model.

```sh
adb shell getprop ro.product.model
```

Reiniciar dispositivo.

```shell
adb reboot
```
