Android Bash Scripting




Hay cierta aplicación que me da problemillas cuando le viene en gana, la aplicación en concreto es PowerAMP, que es el mejor reproductor de audio que he probado hasta ahora para Android.

El problema...se podría arreglar con un par de dólares (y al final acabará siendo así) y es que me dice que la licencia que tengo adquirida no es válida (y no se puede reproducir nada).

Buscando por ahí encontré una manera de solucionarlo, resumiendo...consistia en desinstalar la aplicación, borrar un archivo (folders.db) que es una base de datos SQLite y volver a instalar la aplicación. Este proceso era un poco...¿Cómo decirlo? Pesado. Así que probé que no hacia falta desinstalar la aplicación, con detener el proceso y los servicios bastaba (y después borrar el archivo famoso).

Esta solución era más corta, pero aún así con lo vago que soy yo...quería hacerlo más rápido y sencillo. Como Android está basado en GNU/Linux tiene una shell (en realidad es Busybox, un conjunto de aplicaciones para sistemas embebidos) y existen utilidades integradas en la propia shell para matar procesos (ps, kill, killall), y por supuesto también se puede borrar archivos. Así que podemos hacer un script en bash que haga la tarea sucia por nosotros.
#!/system/bin/sh
# sshMan @ vidasConcurrentes.blogspot.com
while true; do
 rm /data/data/com.maxmpz.audioplayer/databases/folders.db
 killall com.maxmpz.audioplayer
 sleep 43200
done
Hay que decir que todavia no lo he probado (me salta el error de la licencia todos los días menos cuando lo necesito), pero comprobando los numeros de proceso con (ps | grep maxmpz) se puede comprobar que mata los procesos (aunque luego se ejecutan solos de nuevo). Realmente lo que hace el script es borrar el archivo y matar el proceso cada 43200 segundos (12 horas).

Guardar este archivo en la SD y renombrarlo como scriptAMP.sh. Para ejecutarlo hay que ser root y tener algun emulador de terminal instalado.

Primero, copiarlo a la carpeta /data/ (porque no se pueden ejecutar scripts desde /sdcard/) y atribuirle permisos de ejecución:
su
cp /sdcard/scriptAMP.sh /data/
chmod +x /data/scriptAMP.sh
Esto se puede hacer o bien desde adb shell (si tenemos el sdk de Android instalado) o bien desde un emulador de terminal (que será necesario para ejecutarlo). Finalmente para ejecutarlo en el emulador de terminal:
su
/data/./scriptAMP.sh
Eso es todo! Happy Android bash scripting!!