Wear端末をパソコンに接続し、Android Studioでデバッグできるようにする方法

せっかくAndroid Wear端末を手に入れたのだから、Wearアプリも作ってみようかなと思いましたが、Wear端末をAndroid Studioに認識させるのも一苦労です。

Android Wearアプリのデバッグやら実行状況を確認するのにUSBで接続するには、クレードル経由でパソコンに接続する必要があります。しかしクレードルを持ち運ばないといけないのは非常に面倒くさいです。

ちなみにクレードル経由でUSB接続すれば、パソコンにAndroid Wearが認識されてlogcatも確認できます。(クレードルとWear端末は充電端子でしか繋がっていないのに、いったいどういう仕組でLogcatが確認できるんでしょうか・・・)

それはともかく、USB経由で繋ぐにはクレードルを持ち運ばなければならず、腕にはめたままデバッグできないのは面倒くさいです。

そんな場合に備えてBluetooth経由でデバッグすることも可能です。

Bluetooth経由で接続する方法

Bluetooth経由はクレードルを持ち運ばなくて済む点はGoodですが、一方でその他の面で面倒くさいです。

  1. Wear端末とペアリングしているスマホをパソコンにUSBで接続する。
  2. スマホ側でAndroid Wearアプリを起動し、設定(歯車のアイコン)→Bluetooth経由のデバッグを有効にする
  3. Wear端末側でBluetooth経由のデバッグを有効にする(事前に開発者モードを有効にしておく必要あり)
  4. パソコン側でadbコマンドを打ち込み接続を行う
以上のステップを踏むことで、パソコンにWear端末が認識されるようになります。

Wear端末の開発者モードを有効にするには、設定→端末情報→ビルド番号を7回タップします。

adbコマンド

adb forward tcp:4444 localabstract:/adb-hub
adb connect localhost:4444

ポートは自分で決めていいみたいです。

Android StudioのTerminalタブで打つなり、Macのターミナルを起動して打つなりすればOKです。

スマホを繋いだ時に自動的には認識してはくれないので、毎回このコマンドを打たなければなりません。

スマホのAndroid Wearアプリの表示

Bluetooth経由のデバッグを有効にすると、その下にホストとターゲットの表示が出てきます。

ホストはパソコンのことで、adbコマンドを打って接続してやる必要があります。

ターゲットはWear端末のことです。Wear端末でBluetooth経由のデバッグを有効にすれば接続状態になります。

ホストとターゲットの両方が接続状態になると、パソコンからWear端末が認識できるようになります。

ちなみにWear端末のBluetooth経由でバッグをオフにする度に、再度adbコマンドを打ち込まなくてはなりません。

Bluetoothデバッグ中のAndroid Wear

Bluetooth経由のデバッグを有効にすると、常に「Bluetooth経由のデバッグが有効です」と表示され、他のWearアプリを動かしたりできなくなります。

開発中のアプリをWear端末で実行することはできますが、Wear端末からは設定を開く以外なにもできなくなります。

Bluetooth経由のデバッグが有効と常に表示される

結局どっちがいいのか

スマホとWear端末を行き来する必要があるので、Bluetooth経由でのデバッグも面倒くさいです。

Read full post gblog_arrow_right

Android StudioでLogcatが表示されず、何が原因でアプリが落ちてるのかわからなくて困った話

Android Studioでデバッグ実行を行った際に、起動直後にアプリが終了してしまう症状に悩まされました。通常ならLogcatが表示されるはずなのに、それすら表示されなかったため、何が原因で落ちてるのかすら分かりませんでした。

通常、デバッグを実行すると、

デバッグの実行

Logcatが表示されるのですが、何の反応もなくアプリだけが落ちているという状況に陥ったのです。

通常ならLogcatが表示される

他のプロジェクトだと普通に表示されるのに、特定のプロジェクトでだけLogcatも何も表示されずに落ちるのです。アプリが落ちる原因もわからない上に、Logcatが表示されない理由も分からないと、ムダにハマってしまいました。

最終的には、使っていたFragmentのonCreate()super()を呼び出していなかったことが原因でアプリは落ちていました。たったそれだけなのに、Logcatが確認できないせいで迷走してしまったのです。

今回記事を書くに当たり、super()をわざと呼び出さないサンプルプロジェクトを作って再現するかどうか試してみたんですが、普通にLogcatが表示されました。super()呼ばなかったせいで表示されなかったのかなと思ったのですが、どうも違うようです。

なぜAndroid StudioでLogcatが表示されなかったのかはよく分かりませんが、もし同様のトラブルに遭遇した場合に備えて、ADMでLogcat確認できないか試してみましょうというお話です。

そんなときはADMを使う

Android StudioでLogcatが見えなければADMを使います。

Android Studioの右上にあるドロイド君のアイコンを押せば、Android Device Monitorが起動します。(Android SDK > Tools > Monitorが実体です)

ADMの起動アイコン

何かいろいろありすぎてよく分かりませんが、本格的なデバッグはこれを使うといいと思います。Android Studioからデバッグできなくとも、ADMのLogcatなら表示されていました。

adb kill-serverとかしても効果がなかった

ちなみにadbの調子が悪いのかと、adb kill-serveradb start-serverも試してみたのですが全く効果がありませんでした。

というか他のプロジェクトだとLogcatは表示されていましたし、該当のプロジェクトでも単にActivityだけを表示させたらLogcat普通に出ていたので、adbのせいではなかったんでしょうけどね。

そもそもなんかおかしかったら再起動が吉

わざわざADMを使うよりも、素直にエミュレータ、Android Studioを再起動、(それでもうまくいかないならOSごと再起動)するのが一番いいかもしれません。

使っているうちに終了したつもりがプロセスが生きたままになってるということはまれによくあることです。

私はエミュレーターにGenymotion使っていますが、終了させたのにVirtual Box上では動きっぱなしになっていることがよくあります。

本題でないところにこだわって無為に時間を使うより、さっさと再起動した方が早かったように思います。

Android5.0の端末をUSBデバッグできるようにする

Nexus5(Android5.0.1)を購入したのですが、そのままではUSBデバッグができなくて困りました。

パソコンに繋いでもAndroid Studioから端末が認識されません。設定画面を探しまわってもそれらしい設定項目がありませんが、どうもデフォルトでは表示されないようになっているようです。

開発者向けオプション

これを表示させるためには、Androidの設定画面を表示し、一番下にある端末情報を開きます。そして更にその画面の一番下にある「ビルド番号」を連続でタップします。

ビルド番号を連続タップ

そうすることで開発者向けオプションが表示されるようになります。

後は開発者向けオプションの設定メニューから、USBデバッグを有効にするにチェックをつけ、端末をパソコンに接続すればAndroid Studioから認識されるようになります。

USBデバッグを有効にする

認識されるようになったLolipop端末

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

アプリでデータベースを利用する場合、動作確認のためにその中身を確認したい時があります。

データベースへの書き込みを行ってみたものの、ちゃんと保存されているのか確認したい・・・よくあると思います。そんな場合に、adb shellを利用します。

adb shell

Androidアプリを開発するなら簡単なadbコマンドは知っておいたほうがいいと思います。ちなみにadb shellで端末やエミュレータにアクセスする手順は必ずしも以下のとおりでなくてもいいです。

まずはAndroid Studioからエミュレータを起動します。起動したらAndroid StudioのTerminalツールウィンドウを開きます。

Terminalツールウィンドウを開く

adb shellと入力すると、端末にログインできます。

データベースは特別な指定をしていない限り、/data/data/パッケージ名/databases/データベースファイル名に作成されています。

この例の場合は/data/data/jp.gcreate.sample.sampledatabase.app/databases/Sample.dbとなっています。

データベースファイルの場所

これがSQLiteのデータベースファイルになるので、ローカルにコピーしてツールを使って確認するなりしましょう。今回は中身を確認するだけなので、そのままターミナルからsqlite3コマンドを使ってみます。

sqlite3コマンド

sqlite3 データベースファイル名でSQLiteコマンドが実行されます。

sqlite3コマンド

このモードではSQLを使っていろいろできます。私が最初戸惑ったのはこんなかんじです。

  • 基本的に全てSQL文であると判断される
  • エンターでコマンドが実行されるわけではない
  • SQL文は最後に`;`つけない限り改行だと判断される
  • SQLiteのシステムコマンドを使いたい場合は最初にドットをつける

とりあえず以下のコマンドを知っていればなんとかなると思います。

  • `.help`コマンドでヘルプが見れます。
  • `.exit`コマンドで脱出できます。
  • `.schema`コマンドで、データベースファイル内のテーブル構造なんかが確認できます。
  • `.tables`コマンドで、データベースファイル内にどんなテーブルがあるか確認できます。
  • `SELECT * from テーブル名;`で、テーブル内のデータを確認できます。`

実際に実行してみると以下の様な感じで確認できます。

sqlite3コマンドでのデータベース内の確認

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は簡易版なので、使えないプロパティとかもあったりしますが、基本的なところはこれでなんとかなると思います。

Read full post gblog_arrow_right