adb shell の使い方
まずは動作確認
しかしいきなりエラー
1 | An internal error occurred during: "Launching New_configuration" . Path for project must have only one segment. |
とエラーがでたので
検索し
http://stackoverflow.com/questions/9357111/whats-the-meaning-of-this-in-eclipse-path-for-project-must-have-only-one-segm
を参考に
Project > Properties > Run/Debugg settings
で
Launching New_configuration を選択し
delete
これで起動はしたけど
エラーで止まる
次にエラーログをみたら
near “integer” :syntax error
となっていたので調べたら
sql 文が違っていた
これを修正したけど
arning: Activity not started, its current task has been brought to the front
となる
これを調べたら
http://androidfaq.e1blue.net/android/status/27
によれば
ソースに変更なしで再実行するとでるらしい
とりあえず sqlite で確認したかったので
実機の Nexus 7 をUSB接続し
1 | adb devices |
で確認
ここで何も表示されていないのなら
いろいろ設定する必要がある
とりあえず、できているという前提で続ける
1 | adb shell |
を実行すると
Nexus7 の中に入れる
このままだとDBファイルの閲覧ができないので
ユーザを切り替える
やり方は
1 | run-as アプリのパッケージ名 |
ということで
1 | run-as net.developapp.mydbapp |
を実行
そしてDBファイルの存在を調べるため
1 | ls net.developapp.mydbapp /data/net .developapp.mydbapp /databases/ |
を実行
これで myapp.db というsql ファイルの存在を確認
残念ながら sqlite3 が Nexus7 にはないので
一度
/sdcard へコピーし
これをPCに転送してから中身を確認する
そのままコピーしようとしても
1 | sh: can't create /sdcard/myapp .db: Permission denied |
となってしまい、権限のためコピーできない
このため、一般ユーザに戻し
次に
1 | cd /data/data/net .developapp.mydbapp /databases/databases |
で移動し
1 | run-as net.developapp.mydbapp cat databases /myapp .db > /sdcard/myapp .db |
というようにすれば
コピーできる
あとは
adb シェルからログアウトして
1 | adb pull /sdcard/myapp .db |
でファイルをコピー
これで
Ubuntu で
1 | sqlite3 myapp.db |
とすれば中身をみることができる
Nexux7 での
SQLiteの取得と内容確認
は
http://ymlib.com/YMWorld/Android/P0/W0/P007/YMWAndroid007.html
を参考にさせていただきました