@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

adb backup で Android 端末のバックアップを作成する(5)

ここまでの adb backup コマンドでは、-apk は指定していませんでした。今回は -apk を指定して実行してみます。

adb backup -apk -all

オプションとして apk を指定した場合、インストールされているアプリケーションの apk ファイルもバックアップ対象に含まれる事になりますが、注意点としてバックアップされないアプリケーションもあるということです。

Android Backup Extractor の Readme.txt には下記の記述があります。

- Some apps include a policy where the apk is never backed up even if specified.

 apkオプションを付与してadb backup を実行し、.ab ファイルを tar 形式に変換・展開すると、アプリケーション毎に a フォルダが作成され、そこに .apk ファイルが保存されている事が確認できます。

 デバイスにインストールされているアプリケーションは、adb shell から pm(パッケージマネージャ)コマンドを使うことで確認できます。

Using package manager (pm)

http://developer.android.com/tools/help/adb.html#shellcommands

 オプションとして -f を指定するとパスを含めて確認できます、サードパーティだけに絞る場合には -3 が使えます。

shell@C6833:/ $ pm list packages -f
pm list packages -f
package:/system/app/CameraExtensionPermission.apk=com.sonyericsson.cameraextension.permission
package:/system/priv-app/DefaultContainerService.apk=com.android.defcontainer
package:/system/priv-app/CameraCommon.apk=com.sonymobile.cameracommon
package:/system/app/OrangeTheme.apk=com.sonyericsson.orangetheme
package:/system/priv-app/SemcPhone.apk=com.android.phone
package:/system/app/Initial-boot-setup.apk=com.sonyericsson.initialbootsetup
package:/system/priv-app/filecommander.apk=com.mobisystems.fileman
package:/system/app/UnsupportedHeadsetNotifier.apk=com.sonyericsson.unsupportedheadsetnotifier
package:/system/priv-app/PMSservice.apk=com.sonyericsson.providers.protectedmedia
package:/system/priv-app/SEMCFacebookProxy.apk=com.sonyericsson.facebook.proxylogin
package:/data/app/com.linkedin.android-1.apk=com.linkedin.android
package:/system/app/Bluetooth.apk=com.android.bluetooth
package:/system/priv-app/CalendarProvider.apk=com.android.providers.calendar
package:/system/app/SmallAppsLauncher.apk=com.sony.smallapp.launcher

ここで、パスに /priv-app/ が含まれている場合には保護されているのでバックアップ対象になってきません。

残念ながら手元の Android には有料アプリケーション入れていませんので、/data/priv-app/ になっているものがないので実物確認できていませんが。。。

 

KakaoTalk のように package:/data/app/com.kakao.talk-1.apk=com.kakao.talk となっていて、/priv-app で ない 場合でもバックアップ対象に含まれないものがあるそうで、これは別の制御によるもののようですね。

大徳さんから教えていただいた情報によると、AndroidManifest.xml ファイルにて android:allowBackup="false" が設定されている影響ではないか?ということでしたので、実際に確認してみたところそうなっていました。

APK のみをバックアップ対象外にするのか、アプリケーション全体でバックアップの対象外にするのかを細かく制御できるのか理解できていませんが、パッケージリストと比較して取れてパッケージを確認ですかね。

 

adb backup のオプションで -apk を指定すれば APK ファイルのバックアップが可能ですが、アプリケーションが拡張ファイルを持っている場合には、-obb オプションを指定する事でバックアップが可能になります。

(-obb|-noobb enable/disable backup of any installed apk expansion (aka .obb) files  associated with each application; the default is noobb.)