我想直接將數據插入我的應用程序的SQLite數據庫,但我找不到它的任何地方在Android工作室路徑,即使是在我的根路徑:android studio在Linux開發機器上保存sqlite數據庫?
$sudo find/-type f -name 'myapp.db'
我知道有幾家類似的問題已經被問before但Windows的答案並沒有幫助我在Ubuntu Linux上。感謝您的幫助。
我想直接將數據插入我的應用程序的SQLite數據庫,但我找不到它的任何地方在Android工作室路徑,即使是在我的根路徑:android studio在Linux開發機器上保存sqlite數據庫?
$sudo find/-type f -name 'myapp.db'
我知道有幾家類似的問題已經被問before但Windows的答案並沒有幫助我在Ubuntu Linux上。感謝您的幫助。
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
它會自動將其拉向你的項目的根文件夾中。
它會將它保存在每個設備的內部存儲器中,如果您沒有固定的設備,它不會允許您將其拉出,但是如果您使用的是仿真器,則可以將其拉出。
https://developer.android.com/training/basics/data-storage/databases.html
您的應用程序的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
我沒有腳本卻爲把它推回去,因爲push
和run-as
不一起工作。你將不得不做這樣的事情(未經測試)。
$ adb push db.sqlite /sdcard/temp.sqlite
$ cat <<EOF | adb shell
run-as $package
cat /sdcard/temp.sqlite >databases/$db
exit
exit
EOF
您可以在本地計算機上創建數據庫,然後將其複製到您的Android Studio項目項目中。 https://github.com/jgilfelt/android-sqlite-asset-helper –