一、關鍵步驟
主要是run-as指令:
over@over-ThinkPad-R52:~$ adb shell
$ run-as com.package
$ cd /data/data/com.package
$ ls
databases
lib
$ cd databases
preferences.db
$ cat preferences.db > /mnt/sdcard/preferences1.db
代碼說明:
注意com.package換成自己的完整包名,關鍵是run-as指令,最後使用cat指令把資料庫拷貝到sd卡下面。
二、補充
同僚分享/data/data/package/lib這個目錄是可以直接通路的,也就是說adb shell後雖然無法讀取/data目錄,但是可以直接通路這個目錄下的檔案,可以通過上面的run-as指令看得出其權限與其他目錄的權限是不同的,為system權限,這為多apk共享so提供了便利,這也是Vitamio所使用的方式。
2012-6-14
如果簽名了并且指定設定了android:debuggable="false"将無法使用該指令。
2012-7-13
感謝網友分享(見評論),注意不要把adb shell 和 run-as作為一條指令一起執行,例如:adb shell run-as com.pack
三、參考檔案