Skip to Content

Using VectorPaint For VJing »
« Silent mode timer UI changes – review & lessons learnt
submit to reddit

I have been using this script for a while, it allows me to make shortcuts for common android debug tasks (e.g. logcat, shell, installing/overwriting/removing apks). There are probably better ways of doing it for the shell script experts out there, but it suits my purposes… and it’s pretty streamlined.

There are aliases for common devices and common apps so i can start stuff with a few characters

So the first parameter denotes the function.

l = logcat
r = replace app (keeping data)
s = shell
i = install
u = uninstall
o = overwrite (uninstall then install)
ks = kill-server
ss = start-server

The second parameter denots the device (which are configured in the first if statement):

a = all connected devices (from 'adb devices')
f = first device (in 'adb devices' list)
e1 = emulator-5554
(the others are my hardware devices)

Then there are app package name shortcuts … (the 3rd if statement)

To start logcat on ny nexus 1, I type:

ad l n1
And to overwrite an apk on all connected usb devices – it type (the 2nd ‘a’ param stands for ‘all connected devices’), really useful when testing before a release …
ad r a /path/to/apkfile.apk
Basically it’s nothing too high tech, it just makes things much quicker and easier when i am debugging. If you have any suggestions then i am keen to hear them…

So without further ado, here is the script:
#!/bin/bash

# toggle this to test command output without execution 0=no exec
EXEC=1;

DEVICES='f'

if [ $2 ] && [ $2 = 'g1' ] ; then
 DEVICES=("HT848KV04600")
elif [ $2 ] && [ $2 = 'hero' ] ; then
 DEVICES=("HT9BSL901147")
elif [ $2 ] && [ $2 = 'arch' ]  ; then
 DEVICES=("A10-4BE40002-9FF80000-015F2F44-0D01601E")
elif [ $2 ]  && [ $2 = 'n1' ]  ; then
 DEVICES=("HT018P805702")
elif [ $2 ] && [ $2 = 'e1' ]  ; then
 DEVICES=("emulator-5554")
elif [ $2 ] && [ $2 = 's' ]  ; then
 DEVICES=("I5500b2e40b3c")
elif  [ ! $2 ] || [ $2 = 'a' ] ; then
 DEVLIST=`adb devices`
 DEVICES=()
 for D in $DEVLIST; do 
  if  [ $D = "device" ] ; then 
   DEVICES=(${DEVICES[@]} $PREV)
  fi
  PREV=$D
 done
# take the first device if not specified otherwise take all
 if [ ! $2 ] ; then
  DEVICES=${DEVICES[0]} 
 else 
  DEVICES=${DEVICES[@]}
 fi
fi
echo "using devices:" $DEVICES

OP=''
if [ $1 ] ; then
 if [ $1 = 'u' ] ; then
  OP="uninstall"
 elif [ $1 = 'i' ] ; then
  OP="install"
 elif [ $1 = 'r' ] ; then
  OP="install -r"
 elif [ $1 = 'l' ] ; then
  OP="logcat"
 elif [ $1 = 's' ] ; then
  OP="shell"
 elif [ $1 = 'ks' ] ; then
  OP="kill-server"
 elif [ $1 = 'ss' ] ; then
  OP="start-server"
 elif [ $1 = 'z' ] ; then
  OP=""
 elif [ $1 = 'o' ] ; then
  OP=""
 fi
fi
PRG=$3;
if [ $3 ] ; then
 if [ $3 = 'mpp' ] ; then
  PRG="package.name.1"
 elif [ $3 = 'st' ] ; then
  PRG="package.name.2"
 elif [ $3 = 'stp' ] ; then
  PRG="package.name.3"
 elif [ $3 = 'mp' ] ; then
  PRG="package.name.4"
 fi
fi

if [ ! $1 ] ; then
 echo "ad <cmd> <dev> <prg> extra"
 echo "CMD = o (overwrite)  extra=apk | l (logcat) | r (reinstall) extra=apk | "
 echo "i (install) extra=apk | s (shell) | u (uninstall) |  ks (kill-server) | ss (start-server)"
 echo "CMD = z (zipalign <dev>)"
 echo "DEV = g1 hero arch n1 s a(all)"
 echo "PRG = mp mpp st stp"
 echo "------devices---------"
 CMD="adb devices"
 echo $CMD
 if [ $EXEC = 1 ] ; then 
  $CMD
 fi 
else 
 if [ $1 = 'z' ] ; then
  NEWFILE=`echo $2 | sed "s/.apk/_z.apk/"`
  rm -fr $NEWFILE
  CMD="zipalign -v 4 $2 $NEWFILE"
  echo $CMD
  if [ $EXEC = 1 ] ; then 
   $CMD
  fi
 else 
  for DEV in $DEVICES ; do
   echo $DEV
   if [ $1 = 'o' ] ; then
    CMD="adb -s $DEV uninstall $PRG"
    echo $CMD
    if [ $EXEC = 1 ] ; then 
     $CMD
    fi
    CMD="adb -s $DEV install $4"
    echo $CMD
    if [ $EXEC = 1 ] ; then 
     $CMD
    fi
   else 
       CMD="adb -s $DEV $OP $PRG $4"
    echo $CMD
    if [ $EXEC = 1 ] ; then 
     $CMD
    fi
   fi
  done;
 fi
fi

No comments yet!

You can be legendary and add one ...


Allowed HTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*

By submitting a comment you grant Sentinel Web Technologies a perpetual license to reproduce your words and name/web site in attribution. Inappropriate and irrelevant comments will be removed at an admin’s discretion. Your email is used for verification purposes only, it will never be shared.

Using VectorPaint For VJing »
« Silent mode timer UI changes – review & lessons learnt