• admin

Android Shell Tricks: Using Mass Provisioning as an Example, Part 3

Part 1

Part 2


Say you have 400 devices to provision before deployment--how do you configure them all? And how can you guarantee that they’re all configured correctly? Automate it!

adb shell settings put global airplane_mode_on 1
adb shell settings put global adb_enabled 0
adb shell settings put global install_non_market_apps 1
adb shell settings put global usb_mass_storage_enabled 0
adb shell settings put global data_roaming 1

Note that changing these settings does not result in the respective functionality being enabled immediately; rather, the setting is stored and the change becomes effective upon reboot, at the latest.

There are lots of knobs; see Settings.java for a list of available settings. For some of the settings you’ll have to dig around in the source code in order to figure out what values to set.

Backup and Restore

Full backups are easy using adb:

adb backup -apk -shared -obb -all -f mybackup.ab

Restoring from a full backup is easy too:

adb restore mybackup.ab

Another backup tool called rawbu only backs up the /data partition, which is often more appropriate for provisioning. Rawbu stops Android, backs up /data, and then restarts Android.

This is perfect for provisioning. First you configure one device with all the right settings, then backup /data with rawbu. Now you can use that backup as a template for preconfiguring any number of devices with a single command. For example:

# Configure a device and retrieve the backup:
adb shell rawbu backup /sdcard/provision.dat
adb pull /sdcard/provision.dat provision.dat

# Push the backup to a new device and restore /data from it.
adb push provision.dat /sdcard/provision.dat
adb shell rawbu restore /sdcard/provision.dat
adb shell reboot

Note that not all devices ship with rawbu installed. Also, read the usage for rawbu because it spells out some important restrictions regarding the backup path.


Stops Android, does the backup or restore, restarts.

rawbu backup /sdcard/backup.dat
rawbu restore /sdcard/backup.dat

Usage: rawbu COMMAND [options] [backup-file-path]
commands are:
  help            Show this help text.
  backup          Perform a backup of /data.
  restore         Perform a restore of /data.
options include:
  -h              Show this help text.
  -a              Backup all files.

 backup-file-path Defaults to /sdcard/backup.dat .
                  On devices that emulate the sdcard, you will need to
                  explicitly specify the directory it is mapped to,
                  to avoid recursive backup or deletion of the backup file
                  during restore.

                  Eg. /data/media/0/backup.dat

The rawbu command allows you to perform low-level
backup and restore of the /data partition.  This is
where all user data is kept, allowing for a fairly
complete restore of a device's state.  Note that
because this is low-level, it will only work across
builds of the same (or very similar) device software.


These are some of our favorite Android shell utilities, and there are many more besides. As you can see, the Android shell utilities can be quite powerful and useful. We would enjoy hearing from you on some of your favorites. Just tweet us at @sdgsys or on Google+. Need some help with your Android development? Our team of engineers has been working with Android since 2009. Please contact us to see how we can help.


Recent Posts

See All