今回のこと
ドットインストールのAndroidデータベース入門を進めていて、Android Studio内のターミナルを使っていた時の出来事です。
コマンドラインを使ってエミュレーターの中に入り、データベースの中身を操作する、ということをやりました。
その際のエラーが解決できたので、備忘録として書いていきます。
どう解決したか
もうすでにターミナルを使って、エミュレーターの中に入り、データベースのファイルがあるdatabasesディレクトリに移動していることを仮定して書いていきます。
まずは、lsでdatabasesディレクトリの中身を見ます。
generic_x86_arm:/data/data/パッケージ名/databases $ ls
実行結果
(db拡張子のファイル) (右と同じファイル)-journal
では、このファイルを、「sqlite3 ファイル名」でsqliteを起動しましょう。
generic_x86_arm:/data/data/パッケージ名/databases $ sqlite3 ファイル名
実行結果
sh: sqlite3: inaccessible or not found
あれ、ちがう結果になった。。。
原因を調べてみたところ、
「Google Playが実装された仮想デバイスは、root権限でログインできない」とのことでした。
参考サイト https://teratail.com/questions/186703
「Play ストア」欄に、三角マークがついていないものを新たにダウンロードなりして、それを起動しましょう。
起動出来たら、上のほうで省略しましたが「adb shell」からまた同じ手順でコマンドを入力していきましょう。
恐る恐る「sqlite3 ファイル名」と入力すると、
実行結果
SQLite version 3.28.0 2020-05-06 18:46:38
Enter ".help" for usage hints.
sqlite>
できたーーー!!
こんな感じの文が出てきたら起動が成功です。
結論
仮想デバイスがGoogle Playが実装されているかそうでないか、確認してみよう。
参考にさせていただきました
Androidデータベース入門 (全10回) - プログラミングならドットインストール(有料サービス)
Android - ADBコマンドをroot権限で使いたい|teratail