Friday, October 30, 2015

adb adb.exe

10 operaciones útiles para Android (vía ADB)

10 operaciones útiles para Android vía ADB como copiar archivos, instalar o desinstalar aplicaciones o conectar vía WiFi.
Con el SDK de AndroidJava, y los drivers correspondientes instalados en nuestro sistema (Windows, Linux o Mac) tendremos un conjunto de herramientas interesantes para utilizar con nuestro términal.
Si no tienes o no estás seguro de tener correctamente instalados estos tres puntos, antes de continuar, lee las instrucciones en el artículo Preparar el SDK para hacer capturas de pantalla y logs.

Para algunas de estas operaciones será necesario tener acceso root.
Entre las múltiples utilidades que ofrece el SDK, existe una particularmente útil: ADB(Android Debug Bridge), que es algo así como un intermediario entre nuestro sistema operativo y nuestro terminal Android.
Con él se pueden realizar varias tareas, como veremos a continuación, de una forma sencilla y rápida, con sólo conectarlo al USB.
NOTA: La utilidad ADB.EXE está ubicada en la carpeta tools del SDK, por lo que necesitarás estar en esa carpeta. Una buena idea es añadir esta carpeta al PATH del sistema, para no tener que encontrarte ahí necesariamente.

1. Comprobar dispositivos conectados

Un buen punto para empezar, sería el de comprobar si realmente nuestro sistema ha detectado el terminal al conectarlo al USB. Escribimos:
adb devices
Esto debería mostrarnos una lista de los terminales Android conectados al sistema (físicos, emuladores, etc...):
List of devices attached
HT999KF99999 device
En este caso, el dispositivo HT999KF99999 ha sido detectado. Al lado nos muestra el estado del dispositivo (device = conectado, offline = desconectado, etc...).
¿Y en el caso de que tuvieramos varios dispositivos? ¿Todas las acciones que realicemos se harían en todos los dispositivos? Fácil, solo hay que especificar el parámetro -s y el número de serie del dispositivo, seguido por el comando u operación a realizar:
adb -s HT999KF99999 [...]
NOTA: Si no queremos estar escribiendo siempre esos parámetros porque vamos a usar siempre ese dispositivo, podemos establecer una variable de entorno ANDROID_SERIAL con el número de serie.

2. Conectar Android al PC vía WIFI (sin USB)

Otra cuestión bastante útil es la de realizar tareas con el móvil (O incluso enviar ficheros) a través de WIFI, sin necesidad de tener el terminal conectado al USB.
Para ello, lo conectamos al USB para configurarlo:
adb shell setprop service.adb.tcp.port 4444
adb tcpip 4444
Establecemos un puerto TCP para realizar la conexión. En este ejemplo hemos utilizado el puerto 4444/TCP. Acto seguido, obligamos al terminal a reiniciarse en modo conexión víaTCP/IP. Nos mostrará un mensaje similar a este:
restarting in TCP mode port: 4444
Obviamente, debemos estar conectados a una red WiFi, ya que vía GPRS/3G no es posible conectarnos (y no sería recomendable). Si no sabemos la IP privada que tenemos en nuestro terminal, escribimos lo siguiente:
adb shell getprop | findstr ipaddress
Lo que nos devolverá algo similar a lo siguiente, que es la IP del terminal adquirido vía DHCP.
[dhcp.tiwlan0.ipaddress]: [192.168.0.3]
Ahora ya podemos desconectar el terminal del USB. Con esa IP y el puerto TCP, podemos realizar una conexión:
adb connect 192.168.0.3:4444
Lo que debería devolver el siguiente mensaje:
connected to 192.168.0.3:4444
Cuando queramos volver a utilizar el modo normal, escribimos:
adb usb
Y ya podemos conectarlo al USB.
Si todo esto te parece demasiado complicado, recientemente han publicado una aplicación llamada adbWireless, de la que hablan en El Androide Libre.

3. Copiar archivos al terminal

Copiar archivos al terminal es muy sencillo. La sintaxis es la siguiente:
adb push c:\texto.txt /sdcard/texto.txt
El segundo parámetro (c:\texto.txt) indica el fichero que queremos copiar (origen). Como es lógico, podemos obviar la ruta si tenemos el archivo en nuestra carpeta actual.
El tercer parametro es la ruta donde se va a copiar el archivo (destino). Como también es lógico, podemos obviar el nombre del fichero si queremos que conserve el mismo nombre.
En este caso lo estamos copiando a la carpeta sdcard que normalmente es donde se almacenan los datos de la tarjeta SD. También remarcar que esta forma de copiar no necesita montar la tarjeta en Windows, ya que funciona vía directa por ADB.

4. Copiar archivos desde el terminal

De forma análoga al anterior, también existe una forma de copiar ficheros desde el móvil a nuestro PC:
adb pull /data/app/com.emezeta.budaphone.apk c:\
Como segundo parametro tenemos la ruta del fichero de aplicación BudaPhone. Esta ruta puede cambiar dependiendo del terminal y/o la ROM que tengamos.
Como tercer parámetro, tendríamos la ruta donde queremos que se guarde. Se puede utilizar un . (punto) para indicar que se guarde en la ruta actual.
Si quieres tener más destreza en el manejo de comandos similares, te aconsejo que le eches un vistazo al artículo 10 comandos para trabajar en Linux.

5. Examinar info de depuración (aka logcat)

Un recurso valiosísimo para los programadores (y para todo aquel que quiera depurar o descubrir motivos de errores) es el de poder acceder al logcat de Android.
El logcat es un fichero de registro donde se guarda todo lo que ocurre en nuestro móvil: errores, problemas, advertencias e incluso avisos. Podemos ver los últimos mensajes con un sencillo:
adb logcat
Sin embargo, la potencia de este comando está en sus filtros y parámetros:
adb logcat dalvikvm:D *:S
Muestra los mensajes de depuración de la máquina virtual Dalvik, silenciando el resto.
Hay varios niveles más, detallados al final del artículo capturas de pantalla y log de registro en Android. Incluso, utilizando el parámetro -v es posible formatear con cierta información relevante:
adb logcat -v process
Que muestra la información con un mensaje previo con información acerca del PID del proceso que lo efectuó. O, entre otros, información sobre el momento exacto (timestamp) de cuando ha ocurrido:
adb logcat -v time

6. Instalar aplicaciones

Una opción muy interesante para aquellos que trasteamos mucho con aplicaciones (y sobretodo para desarrolladores) es la de instalar ficheros apk (aplicaciones) directamente desde la terminal de nuestro PC.
Esto nos da varias ventajas. En primer lugar podemos tener almacenada una amplia biblioteca de aplicaciones e instalarlas a un sólo golpe de teclado, sin necesidad de ir paso a paso por el Market (sobre todo si se trata de varias aplicaciones).
Si quieres una aplicación para hacer copia de seguridad de tus aplicaciones, te recomiendo echar un vistazo a Android Commander
En segundo lugar, tenemos la posibilidad de instalar aplicaciones que no estén presentes en el Market, o sin necesidad de subirlas para utilizarlas.
adb install aplicacion.apk
Con este sencillo comando bastará. Adb hará el resto. También es posible utilizar los siguientes parámetros:
adb install -r facebook.apk
Reinstala la aplicación de Facebook, sin eliminar los datos de la misma.
adb install -s angrybirds.apk
Instala la aplicación en la tarjeta SD en lugar de guardarla en el teléfono, útil para terminales antiguos con poco espacio o para usuarios con demasiadas aplicaciones y quieren utilizar la tarjeta SD para ese fin.

7. Desinstalar aplicaciones

Si es posible instalar aplicaciones, también lo será desinstalar. Sólo que en este caso, no se especifica el fichero apk, sino el nombre del producto:
adb uninstall com.emezeta.mzspray
Muy útil para desinstalar rápidamente y de un plumazo, si hemos estado probando variasaplicaciones divertidas para probarlas.
También es posible, desinstalar la aplicación sin eliminar los datos de la misma, con el parámetro -k.

8. Reiniciar el dispositivo

Si necesitamos reiniciar nuestro terminal, es muy sencillo hacerlo desde ADB:
adb reboot
Además, podemos seleccionar dos tipos de reinicios adicionales:
adb reboot bootloader
Bootloader es el cargador principal de Android, desde donde se pueden realizar varias operaciones con respecto al funcionamiento del terminal (cambio de firmware, etc...).
adb reboot recovery
Recovery es una especie de panel de recuperación, desde el cuál se pueden realizar tareas varias de recuperación, como puede ser particionamiento, wipes, flasheo, etc...
NOTA: No reiniciar en estos modos si no se sabe lo que se está haciendo. Se pueden realizar cambios que dejen al sistema operativo en un estado no funcional.

9. Remontar la partición del sistema

Otra de las tareas útiles, para aquellos que quieren adentrarse en el mundo del funcionamiento de Android es el de volver a montar la partición de sistema de Android con permisos de lectura y escritura, ya que en principio, sólo tiene permisos de lectura.
adb remount
Esto permitirá realizar cambios de escritura en la partición /system.

10. Ejecutar comandos en el entorno Android

Puesto que Android funciona con una base de kernel de Linux, es posible lanzar comandos en la terminal propia de android. Para ello podemos abrir una consola con el siguiente comando:
adb shell
O lanzar comandos directamente:
adb shell [comando]
Esto abre un amplio abanico de posibilidades (sobre todo para usuarios root) a los que propongo empezar con unos sencillos, para ir conociendo el sistema:
adb shell df -h
Que nos mostrará las particiones montadas y el espacio libre, entre otros datos. O por otra parte:
adb shell ls -lh /

Friday, October 16, 2015

Commands Windows shell

http://www.computerperformance.co.uk/vista/vista_shell.htm

Windows Vista Shell Commands - SendTo
Think of Vista's Shell as a special engine room.  To that thought add the concept 'command', as in command line, or 'dos box'.  Now all that you need for action is the name of the folder object, for example shell:sendto.windows vista shell:sendto
Get Started with Shell:SendTo
If you right-click a file, from the drop-down menu you have the option to SendTo a select group of folders.  Now, you may wish to add more locations to this SendTo list.  Strangely, normal explorer techniques won't give you access to the SendTo folder, this is a job for Vista's command, shell:sendto
Click on the Vista Start button
Click in the Start Search dialog box
Type -> shell:sendto
Result: Vista launches the Windows Explorer shell at the SendTo folder.  You are now in a position to add more shortcuts to the SendTo folder.
The command Shell:xyz acts as a shortcut to the folder you wish to find quickly, you just have to remember the key names to substitute for xyz.
More Shell:Commands
shell:cookies
shell:nethood
shell:PrintersFolder
shell:System
Incidentally, my friend 'Barking' Eddie has been amused by this shell command:
shell:SystemCertificates
  ?
Avoid the Space Trap
Shell:sendto is correct - no space
Shell:  sendto is wrong - you don't need a space
Shell :sendto does not work either, there must be no spaces.
Are the shell commands case sensitive?  No not all, just avoid that space.  These Vista Shell:Commands are merely a specialist way of accessing key folders.  You could find the very same information through Windows Explorer or by launching the Control Panel and drilling down through the sub-menus.
Full list of Vista Shell:Commands

AddNewProgramsFolder
Administrative Tools
AppData
AppUpdatesFolder
Cache
CD Burning
ChangeRemoveProgramsFolder
Common Administrative Tools
Common AppData
Common Desktop
Common Documents
Common Programs
Common Start Menu
Common Startup
Common Templates
CommonDownloads
CommonMusic
CommonPictures
CommonVideo
ConflictFolder
ConnectionsFolder
Contacts
ControlPanelFolder
Cookies
CredentialManager
CryptoKeys
CSCFolder
Default Gadgets
Desktop
Downloads
DpapiKeys
Favorites
Fonts
Gadgets
Games
GameTasks
History
InternetFolder
Links
Local AppData
LocalAppDataLow
LocalizedResourcesDir
MAPIFolder
My Music
My Pictures
My Video
MyComputerFolder
NetHood
NetworkPlacesFolder
OEM Links
Original Images
Personal
PhotoAlbums
Playlists
PrintersFolder
PrintHood
Profile
ProgramFiles
ProgramFilesCommon
ProgramFilesCommonX86
ProgramFilesX86
Programs
Public
PublicGameTasks
Quick Launch
Recent
RecycleBinFolder
ResourceDir
SampleMusic
SamplePictures
SamplePlaylists
SampleVideos
SavedGames
Searches
SendTo
Start Menu
Startup
SyncCenterFolder
SyncResultsFolder
SyncSetupFolder
System
SystemCertificates
SystemX86
Templates
TreePropertiesFolder
UserProfiles
UsersFilesFolder
Windows