1 問題
最近在做app的時候,要將Android手機中的Sqlite數據庫導入到pc上,查看裏面的數據,然後每次去app的目錄下面去找出數據庫,然後在adb shell中複製到sdCard,然後退出shell,再用adb pull命令拉到pc上,非常麻煩,一不小心就出錯了,多搞幾次就崩潰了。作爲程序猿當然不能這麼幹啦。
當然你可以用DDMS,可視化操作導出數據庫,但是且不談真機上DDMS根本沒有權限看到數據庫,作爲一個程序猿,你需要更優雅的解決辦法
2 手動操作
下面先講手動操作,如何將Android數據庫導出到Windows電腦上
首先進入命令行cmd,然後一步一步執行下面命令:
adb shell //進入shell
su - //切換到root命令
cp /data/data/com.demo.app/databases/db_test /mnt/sdcard // 複製數據庫到sdCard上,否則無法拉到pc上
exit //退出root
exit //退出shell,回到cmd
adb pull /mnt/sdcard/db_test C:\Users\Administrator\Desktop // 將數據庫拉到桌面上
注意:這裏必須先將數據庫複製到sdCard卡上,然後再從sdCard上拉到電腦上,因爲adb pull沒有root權限,沒有辦法直接從/data/data目錄下面去拉數據庫
好了,通過上述操作就可以把demoapp下面的db_test數據庫拉到pc上,是不是巨麻煩,下面來講批處理操作
3 自動操作
bat文件可以自動執行一批dos命令,不用一個一個輸入。具體方法是:
新建一個txt文件a.txt,輸入上面的手動命令,注意在bat中註釋符號是”rem”,需要將所有的”//”換成”rem”,然後修改文件名爲a.bat,直接雙擊運行,然後。。。。呵呵
咋不按套路出牌呢,爲啥卡在這兒呢?這是因爲一旦進入shell,bat批處理命令就失效了,也就是卡在了shell裏面,不會繼續往下執行了,所以,正確的寫法是:
adb shell "su -c 'cp /data/data/com.demo.app/databases/db_test /mnt/sdcard'"
adb pull /mnt/sdcard/db_test C:\Users\Administrator\Desktop
注意:adb shell “su -c ‘shell中要執行的命令’ “
這樣就使得adb shell具有了root權限
再也不用去shell裏面敲命令了,雙擊一鍵完成,是不是很優雅呢
4 總結
其實歸結起來就是如何讓adb shell執行時擁有root權限:
adb shell “su -c ‘your command’ “
另外,真機必須root
5 轉載請註明來自”梧桐那時雨的博客”:http://blog.csdn.net/fuchaosz/article/details/51076721
Tips:
如果覺得這篇博客對你有幫助或者喜歡博主的寫作風格,就給博主留個言或者頂一下唄,鼓勵博主創作出更多優質博客,Thank you