2016-01-05 64 views
2

我需要在調試模式下運行腳本,將所有共享首選項拉入文件夾。從我的研究中,我只能從調試版本中獲得。我從一個無根的手機試圖讓這樣的sharedpreferences:android adb shell腳本 - 如何提取所有共享首選項

​​

然後我能穿越到/數據/數據/ mypackagename/shared_prefs

,但我希望能夠把它放在一個腳本中。我只能從外部adb外殼調用adb pull。 如何在調試應用程序中將shared_prefs整個文件夾從正常的非根設備中取出?必須有一種方式,因爲Facebook如何做它

這個問題是關於檢索sharedPreferences而不是數據庫檢索。

+0

可能的重複[android adb,檢索數據庫使用運行as](http://stackoverflow.com/questions/18471780/android-adb-retrieve-database-using-run-as ) –

+0

那關於數據庫,這是sharedpreference。雖然我的問題稍微有點類似於共享偏好檢索。有些可以在私人模式等 – j2emanue

回答

2

我創建了下面的shell腳本

#!/bin/bash 

pname=$1 

if [ -z "${pname}" ]; then 
    echo "Please enter a package name" 
    exit 1 
fi 

adb shell "run-as $pname chmod 776 shared_prefs" 
adb pull /data/data/$pname/shared_prefs ./${pname}_shared_prefs 
adb shell "run-as $pname chmod 771 shared_prefs" 

命名pullsharedprefs.sh(或任何你想要的),並從終端運行命令:

chmod +x pullsharedprefs.sh 
./pullsharedprefs.sh some.package.name 

shared_prefs將被拉至當前工作目錄並命名爲{package-name} _shared_prefs


使用測試gentmotion(Android 5.1.1)

+0

當我運行這個對我的設備(運行牛軋糖),我看到以下錯誤時,試圖「拉」:'adb:錯誤:遠程對象'/ data/data//shared_prefs'不存在',即使我可以看到並檢查共享首選項目錄,如果我手動使用設備外殼。任何想法,爲什麼這可能是? – stkent