Android allows the backup and restore of an app’s private data using
adb backup. This feature is enabled if the
android:allowbackup attribute is set to true in the Android Manifest (
AndroidManifest.xml) XML file. If the feature is disabled, ADB backups will not work. In this article we will learn how to enable ADB backups for any app without rooting.
Android ADB Backup FeatureThe Android ADB backup feature using
adb backupis only available from Android 4.0 (or ICS). To use this feature, USB debugging (under
Settings -> Developer options) must be enabled on the device.
Also, this feature does not work on all apps. To enable ADB backup for an app, that app must have set the
android:allowbackup attribute to
true in the Android Manifest (
AndroidManifest.xml) XML file.
Apps like the
Google Authenticator and
Overview of Enabling ADB Backup
To enable the ADB backup of an app, we will need to set the
android:allowBackup attribute to true. To do that, we will need to:
- Download or get a copy of the original APK file
- Decompile the APK
android:allowBackupattribute to true in
- Recompile the APK and sign it with our own keys
For this tutorial, you will need the following tools to be installed:
- Java JDK – for keytool and jarsigner
- Android SDK – for adb and zipalign
- Apktool – to decompile ad recompile APKs
- A text editor, any text editor will do depending on the platform you are working on.
- Android mobile phone with USB debugging enabled
This article will not cover the installation of the tools mentioned above. Installing the tools are quite straight forward, except maybe for Apktool. To install Apktool, refer to the Apktool install guide.
Before proceeding further, make sure that the PATH environment variable includes the Java SDK, Android SDK and Apktool binaries. All our work will be done within a directory called
work within your home directory.
$ mkdir ~/work $ cd ~/work
Download and Decompile APK
I already have an article documenting the process of decompiling APKs. So, I am not going to duplicate the content over here. Refer to the article for instructions on how to download and decompile the APK.
Enable ADB Backup Feature
The decompiled code should found at work/out directory within your home directory. Edit the
AndroidManifest.xml and set the
android:allowbackup attribute to true.
$ vi ~/work/out/AndroidManifest.xml
You can also use the following
sed command to toggle the value of the attribute found in the
$ sed -i -e "s/android\:allowBackup\=\"false\"/android\:allowBackup\=\"true\"/" ~/work/out/AndroidManifest.xml
Recompile and Install APK
Again, this process has been documented in this article. Generate the keys to sign the app if this is the first time you are doing this. Else, reuse the same key that you generated before to sign the APK. Follow the “Generate Keys” and “Recompile APK” sections for more info.
You will need to uninstall the original APK before you can install the modified APK else you will get an error. When you uninstall the original APK, you will lose the app’s private data.
With the modified APK installed on your phone, you will be able to perform ADB backups. But take note that you will not be able to install any new updates for the app from the Play Store. This is due to the fact that the keys used to sign the app are different.
To use an updated app available on the Play Store, you will need to get a copy of the new APK file, decompile the APK, modify the
AndroidManifest.xml file, recompile the APK and sign using the same original key that you used previously.