adbコマンドを使ってアプリを手動で削除する

adbコマンドを使ってアプリを手動で削除するのは、スマホのアプリを作成する上では必要ないと思っていましたが、Android Wearアプリを作る場合には覚えておいた方がいいです。 というのもWearに一度インストールしたアプリは、Wear上での操作では削除することができないからです。 スマホ経由でインストールしたアプリの場合、スマホ側でアプリを削除すればWearにインストールされたアプリも一緒に消えてくれますので、一般的にはあまり問題にならないのかもしれません。 しかしWearアプリを開発していると、デバッグのためなどでWearに直接アプリをインストールすることが多くなります。こうなるとWearがデバッグ用のアプリで埋め尽くされる事態になってくるのです。 インストールされているパッケージの一覧を確認する adb shell pm list package ターミナルからコマンドを入力すると、対象デバイスにインストールされているパッケージの一覧が表示されます。 アプリを削除するためにはパッケージ名が必要になるので、このコマンドで確認しましょう。 ちなみにパソコンに複数の端末が接続されている場合、adbコマンドを送るデバイスを指定する必要があるので注意しましょう。 アプリを手動で削除する adb uninstall アプリのパッケージ名 Wearのアプリを削除する場合は、コマンドの結果が返ってくるまで時間がかかります。 Wearの初期化のほうが早いかもしれない ちなみに、Wearを初期化してしまえば済む話でもあるので、手動で消さなくてもなんとかなる話ではあります。Wearは初期化したところでスマホとペアリングし直すだけでほぼ元に戻ると言っても過言ではないため、初期化したほうが手っ取り早いのかもしれません。 ただ、サンプルアプリを1個インストールする度に初期化するのも馬鹿らしいので、コマンドを使えば簡単にアプリを消せるということを知っておくと何かと便利かもしれません。

データベースのデバッグ adb shellでDBの内容を確認する

アプリでデータベースを利用する場合、動作確認のためにその中身を確認したい時があります。 データベースへの書き込みを行ってみたものの、ちゃんと保存されているのか確認したい・・・よくあると思います。そんな場合に、adb shellを利用します。 adb shell Androidアプリを開発するなら簡単なadbコマンドは知っておいたほうがいいと思います。ちなみにadb shellで端末やエミュレータにアクセスする手順は必ずしも以下のとおりでなくてもいいです。 まずはAndroid Studioからエミュレータを起動します。起動したらAndroid StudioのTerminalツールウィンドウを開きます。 adb shellと入力すると、端末にログインできます。 データベースは特別な指定をしていない限り、/data/data/パッケージ名/databases/データベースファイル名に作成されています。 この例の場合は/data/data/jp.gcreate.sample.sampledatabase.app/databases/Sample.dbとなっています。 これがSQLiteのデータベースファイルになるので、ローカルにコピーしてツールを使って確認するなりしましょう。今回は中身を確認するだけなので、そのままターミナルからsqlite3コマンドを使ってみます。 sqlite3コマンド sqlite3 データベースファイル名でSQLiteコマンドが実行されます。 このモードではSQLを使っていろいろできます。私が最初戸惑ったのはこんなかんじです。 基本的に全てSQL文であると判断される エンターでコマンドが実行されるわけではない SQL文は最後に`;`つけない限り改行だと判断される SQLiteのシステムコマンドを使いたい場合は最初にドットをつける とりあえず以下のコマンドを知っていればなんとかなると思います。 `.help`コマンドでヘルプが見れます。 `.exit`コマンドで脱出できます。 `.schema`コマンドで、データベースファイル内のテーブル構造なんかが確認できます。 `.tables`コマンドで、データベースファイル内にどんなテーブルがあるか確認できます。 `SELECT * from テーブル名;`で、テーブル内のデータを確認できます。` 実際に実行してみると以下の様な感じで確認できます。 SQLite version 3.7.11 2012-03-20 11:35:50 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .schema CREATE TABLE Sample(_id integer primary key autoincrement , InputText text not null , InputDate text not null ); CREATE TABLE android_metadata (locale TEXT); sqlite> .tables Sample android_metadata sqlite> SELECT * from Sample; 1|abc|2014/09/10 12:42:22 2|welcome to JAPAN!|2014/09/10 12:42:40 3|this is test|2014/09/10 12:42:50 4|aaa|2014/09/10 12:43:04 sqlite> 私はドットインストールでSQLiteを勉強しました。AndroidのSQLiteは簡易版なので、使えないプロパティとかもあったりしますが、基本的なところはこれでなんとかなると思います。 実機の場合はうまくいかない ちなみにこの方法は、実機では使えない手段です。データのパーミッションの関係でファイルを取得することもできず、そもそもsqlite3コマンドが利用できない場合があるからです。 実機をルート化しているとか、デバッグ用のアプリ(AndroidManifest.xmlのdebuggableがtrueになっている)であるとかなら何とかなりますが、基本的にこの方法はエミュレータを前提とした話です。