2014-01-11 46 views
11

我需要從Genesis設備的Android應用程序獲取SQLite數據庫,其中用戶已經手工填充。從Android應用程序獲取SQLite數據庫

我如何創建另一個應用程序或任何其他方式來獲得這個數據庫並保存在哪裏我可以得到?

實驗值:該設備具有根

感謝

回答

13

步驟上CMD:

1)式adb shell

2)run-as com.your.package

3)式ls

cache 

databases 

lib 

你可以在這裏找到你的Database ......你甚至沒有root設備

希望這將有助於您...

+0

嗨nitesh,謝謝你的答案。當我運行命令我收到這條消息「(應用程序路徑)/databases/database.db:不能執行 - 權限被拒絕」 –

+1

已經創建了數據庫..你是超級用戶,如果你使用Linux ... rember命令是(run-as你的包路徑) – nitesh

+0

@PauloKussler運行你的項目到模擬器..你會發現數據庫到文件瀏覽器/數據/數據/數據庫 – nitesh

4

只要你有連接到一個盒子上的PATH ADB的設備,你可以使用這個命令:

adb -d shell 'run-as your.package.name.here cat /data/data/your.package.name.here/databases/your_db_name_here.sqlite > /sdcard/recovered_db.sqlite' 

或者你可以使用Ecliplse DDMS文件瀏覽器。從的Android ... /平臺的工具

+0

請注意,可能需要根據設備將'/ sdcard'更改爲適用於引用外部存儲的位置。 – CommonsWare

1

試圖幾十個沒有爲我的棉花糖工作的命令後,我發現這一個(至少在調試的應用程序)工作原理:

adb shell "run-as your.package.name cp /data/data/your.package.name/databases/you-db-name /sdcard/file_to_write" 

然後你可以簡單地查看數據庫,例如aSQLiteManager

1

您可以使用此腳本。

humpty.sh

你應該知道的應用程序包名稱和SQLite數據庫名稱。 您可以檢查可用的數據庫。

$ adb shell 
$ run-as <package-name> 
$ ls databases/ 

轉儲數據庫或其他文件。

./humpty.sh -d <package-name> databases/<db-name> 
1

您可以包括在你的應用程序的Stetho庫,

http://facebook.github.io/stetho/

,這將允許您使用Chrome的網頁調試工具

,或者使用下面的shell腳本來訪問您的數據庫:

#!/bin/bash 
echo "Requesting data from Android" 
adb backup -f data.ab -noapk YOUR.APK.NAME 
echo "Decoding...." 
dd if=data.ab skip=24 iflag=skip_bytes | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf - 
rm data.ab 
echo "Done" 

```

上述方法都不需要您的設備紮根,後者甚至可以在您自己編寫的應用程序上工作,只要ApplicationManifest。xml不包含「backup = false」

相關問題