2016-05-21 83 views
0

我想直接將數據插入我的應用程序的SQLite數據庫,但我找不到它的任何地方在Android工作室路徑,即使是在我的根路徑:android studio在Linux開發機器上保存sqlite數據庫?

$sudo find/-type f -name 'myapp.db' 

我知道有幾家類似的問題已經被問before但Windows的答案並沒有幫助我在Ubuntu Linux上。感謝您的幫助。

+1

您可以在本地計算機上創建數據庫,然後將其複製到您的Android Studio項目項目中。 https://github.com/jgilfelt/android-sqlite-asset-helper –

回答

1

Android Studio不會將數據庫本地存儲在您的計算機中。每次部署到新設備時,數據庫僅存在於設備&中,那麼您的數據庫將在該新設備中新建。這就是爲什麼你不能在你的電腦中找到它。這裏就是數據庫位於設備:

/data/data/full_qualified_java_package_name/databases/database_name.db 

現在,如果你想直接插入數據,您可以使用終端Android Studio中&利用亞行拉數據庫了仿真器,對其進行修改,並將其重新推入。哎呀,我確信如果您知道足夠的Linux,則可以將所需內容插入其中,而無需將其從設備中拉出。以下是爲Android工作室終端對於一些樣本命令:

~/Android/Sdk/platform-tools/adb devices 

獲取設備編號,則:

~/Android/Sdk/platform-tools/adb -s emulator-#### pull /data/data/full_qualified_java_package_name/databases/database_name.db <local-filepath> 

並將其回送,這只是:

~/Android/Sdk/platform-tools/adb -s emulator-#### push <local-filepath> /data/data/full_qualified_java_package_name/databases/database_name.db 

例如:

~/Android/Sdk/platform-tools/adb -s emulator-5554 pull /data/data/com.danielkaparunakis.stackoverflowquestions/databases/Questiondatabase.db /Users/DanielKaparunakis/Desktop 

額外的小費:如果保留空白,當你拉這樣的:

~/Android/Sdk/platform-tools/adb -s emulator-5554 pull /data/data/com.danielkaparunakis.stackoverflowquestions/databases/Questiondatabase.db 

它會自動將其拉向你的項目的根文件夾中。

+0

是的,我在我的本地開發機器上搜索數據庫!我怎麼能到達adb終端? – Karlom

+1

ADB位於'〜/ SDK/platform-tools/adb'文件夾中。如果您轉到SDK管理器並查看您的SDK的安裝位置,您可以確切地找到它的位置。一旦你在那裏,你可以執行命令。 –

+0

當我在終端執行:'$〜/ Android/Sdk/platform-tools/adb -s emulator -5554 shell pull/data/data/myapp/databases/myapp.db'我得到'/ system/bin/sh:拉:找不到'任何想法爲什麼? – Karlom

1

您的應用程序的db是隻在設備上。您可以將其從任何連接的設備– 以及無根物理設備中提取。該腳本將其從第一個設備中拉出。

這個技巧是run-as <package name>,它運行一個shell的應用程序的目錄,完全訪問應用程序的數據。

$package替換爲您應用的軟件包名稱,並將$db替換爲您應用的db名稱。

$ LC_ALL=C adb exec-out run-as $package cat databases/$db >db.sqlite 

LC_ALL=C是爲了避免在某些系統上出現一些奇怪的區域設置行爲。

adb默認由Android Studio安裝到~/Android/Sdk/platform-tools/adb

更新

程序「亞行當前未安裝。要運行'adb',請詢問您的管理員安裝軟件包'android-tools-adb'

這是Ubuntu告訴你可以從Ubuntu軟件包管理器安裝它。

通常情況下,您已經將其作爲Android Studio的一部分。

更新2

我沒有腳本卻爲把它推回去,因爲pushrun-as不一起工作。你將不得不做這樣的事情(未經測試)。

$ adb push db.sqlite /sdcard/temp.sqlite 
$ cat <<EOF | adb shell 
run-as $package 
cat /sdcard/temp.sqlite >databases/$db 
exit 
exit 
EOF 
+0

我應該在哪裏執行這個命令?我對android很陌生,不知道怎麼去工作室的終端。 – Karlom

+0

我從我的shell(bash)執行它。 'adb'必須在你的路上。 – totoro

+0

如果你的意思是,linux機器的終端,它是yeild:'me @ pc:〜$ LC_ALL = C adb exec -out run-as $ package cat databases/$ db> db.sqlite 程序'adb'目前不是安裝。要運行'adb',請要求您的管理員安裝軟件包'android-tools-adb'',並且ubuntu存儲庫上沒有這樣的軟件包。 – Karlom

相關問題