adb shell の使い方
まずは動作確認
しかしいきなりエラー
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接続し
adb devices
で確認
ここで何も表示されていないのなら
いろいろ設定する必要がある
とりあえず、できているという前提で続ける
adb shell
を実行すると
Nexus7 の中に入れる
このままだとDBファイルの閲覧ができないので
ユーザを切り替える
やり方は
run-as アプリのパッケージ名
ということで
run-as net.developapp.mydbapp
を実行
そしてDBファイルの存在を調べるため
ls net.developapp.mydbapp /data/net.developapp.mydbapp/databases/
を実行
これで myapp.db というsql ファイルの存在を確認
残念ながら sqlite3 が Nexus7 にはないので
一度
/sdcard へコピーし
これをPCに転送してから中身を確認する
そのままコピーしようとしても
sh: can't create /sdcard/myapp.db: Permission denied
となってしまい、権限のためコピーできない
このため、一般ユーザに戻し
次に
cd /data/data/net.developapp.mydbapp/databases/databases
で移動し
run-as net.developapp.mydbapp cat databases/myapp.db > /sdcard/myapp.db
というようにすれば
コピーできる
あとは
adb シェルからログアウトして
adb pull /sdcard/myapp.db
でファイルをコピー
これで
Ubuntu で
sqlite3 myapp.db
とすれば中身をみることができる
Nexux7 での
SQLiteの取得と内容確認
は
http://ymlib.com/YMWorld/Android/P0/W0/P007/YMWAndroid007.html
を参考にさせていただきました