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

せっかくAndroid Wear端末を手に入れたのだから、Wearアプリも作ってみようかなと思いましたが、Wear端末をAndroid Studioに認識させるのも一苦労です。 Android Wearアプリのデバッグやら実行状況を確認するのにUSBで接続するには、クレードル経由でパソコンに接続する必要があります。しかしクレードルを持ち運ばないといけないのは非常に面倒くさいです。 ちなみにクレードル経由でUSB接続すれば、パソコンにAndroid Wearが認識されてlogcatも確認できます。(クレードルとWear端末は充電端子でしか繋がっていないのに、いったいどういう仕組でLogcatが確認できるんでしょうか・・・) それはともかく、USB経由で繋ぐにはクレードルを持ち運ばなければならず、腕にはめたままデバッグできないのは面倒くさいです。 そんな場合に備えてBluetooth経由でデバッグすることも可能です。 Bluetooth経由で接続する方法 Bluetooth経由はクレードルを持ち運ばなくて済む点はGoodですが、一方でその他の面で面倒くさいです。 Wear端末とペアリングしているスマホをパソコンにUSBで接続する。 スマホ側でAndroid Wearアプリを起動し、設定(歯車のアイコン)→Bluetooth経由のデバッグを有効にする Wear端末側でBluetooth経由のデバッグを有効にする(事前に開発者モードを有効にしておく必要あり) パソコン側で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端末からは設定を開く以外なにもできなくなります。 結局どっちがいいのか スマホとWear端末を行き来する必要があるので、Bluetooth経由でのデバッグも面倒くさいです。 Bluetooth経由だと、Wear端末にデバッグ対象のアプリが転送されるのに時間がかかります。スマホのアプリみたいに即座に起動したりはしません。転送に時間がかかっているのか、それとも失敗しているのかよく分からなくて困ります。 USB経由でも転送されるのにラグを感じますが、Bluetoothよりは早い気がします。 そういう観点からは、やっぱりクレードル経由の方が開発には向いている気がします。 普段はUSB経由で開発を行い、パソコンにUSBポートが2つもない(スマホと同時に接続できない)とか、クレードルを持ち運べないとか、クレードルを持ってくるのを忘れた時など、そういう場合にはBluetooth経由で開発するようにしたらいいと思います。 参考サイト Android Developers – Debugging over Bluetooth Qiita – 15分ではじめるAndroid Wear開発 – 実機を使った開発環境の作り方

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

Android Studioでデバッグ実行を行った際に、起動直後にアプリが終了してしまう症状に悩まされました。通常なら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が実体です) 何かいろいろありすぎてよく分かりませんが、本格的なデバッグはこれを使うといいと思います。Android Studioからデバッグできなくとも、ADMのLogcatなら表示されていました。 adb kill-serverとかしても効果がなかった ちなみにadbの調子が悪いのかと、adb kill-serverとadb start-serverも試してみたのですが全く効果がありませんでした。 というか他のプロジェクトだとLogcatは表示されていましたし、該当のプロジェクトでも単にActivityだけを表示させたらLogcat普通に出ていたので、adbのせいではなかったんでしょうけどね。 そもそもなんかおかしかったら再起動が吉 わざわざADMを使うよりも、素直にエミュレータ、Android Studioを再起動、(それでもうまくいかないならOSごと再起動)するのが一番いいかもしれません。 使っているうちに終了したつもりがプロセスが生きたままになってるということはまれによくあることです。 私はエミュレーターにGenymotion使っていますが、終了させたのにVirtual Box上では動きっぱなしになっていることがよくあります。 本題でないところにこだわって無為に時間を使うより、さっさと再起動した方が早かったように思います。

Android Studioをインストールする(Windows 8.1 64bit)

Android Studioをダウンロードしてきてインストーラーを起動してインストールします。 Android Studioをインストールするには、まずJDK1.7以上が必要です。 JDKをインストールしていない、もしくはインストールしているがJDKへのパスが通っていない場合、Android Studioのインストーラーで「JDKの場所を指定してください」というメッセージが表示されます。 この画面が表示されたら、一旦インストールを中止し、JDKのインストールと環境変数の設定を行いましょう。 JDKをインストールしている場合、JDKの場所を指定してやれば先へ進めるかと思います。しかしここで場所を指定するより、環境変数の設定を行った方が後々便利だと思うので、後述する環境変数の設定を行うことをオススメします。 JDKのダウンロードとインストール OracleのサイトからJDKをダウンロードしてインストールします。 Oracle – Java SE Downloads JDKは開発ツールが含まれたものになります。JREとは違うので注意してください。 ダウンロードページに飛んだら、Accept Licenseにチェックをつけて、自分のWindowsが32bit版ならWindows x86を、64bit版ならWindows x64をダウンロードしてインストールします。 JDK1.8でもいいのか このスクリーンショットはJDK1.8(JDK 8)のダウンロードとインストールを行っています。 1.8だとエラーが出るというような情報もあるので、1.8だとインストール出来ないのだろうかと試してみた際に撮ったものだからです。 1.8でもAndroid Studioのインストール、Wizardを使って作ったHello Worldプロジェクトの実行までは無事にできました。 ただ公式にはJDK1.7(JDK 7)が必須とあるので、敢えて1.8で冒険する必要はないような気もします。 1.8だと問題あるのかよく分からないので、詳しい方は教えてくださると助かります。 環境変数の設定 JDKをインストールし終わったら、今度は環境変数の設定を行い、JDKへのパスを通します。 Windows 8.1の場合、コントロールパネル→システムとセキュリティ→システムを開き、システムの詳細設定を開きます。 そうするとシステムのプロパティが開くので、詳細設定のタブの下にある環境変数のボタンを押します。 ユーザー環境変数とシステム環境変数と2つありますが、どちらに追加しても構いません。ユーザー環境変数だと、現在Windowsにログインしているユーザーだけ有効になるだけです。今回はシステム環境変数で設定します。 新規ボタンを押し、変数名にJAVA_HOME、変数値にJDKのインストール先を指定します。特に変更していなければ、C:¥Program Files¥Java¥jdk1.8.0_31という感じになっていると思います。(数字はインストールしたJDKのバージョンによって異なるので、自分の環境に合わせて指定しましょう) 以上で環境変数の設定は完了です。 Android Studioのインストール 環境変数の設定さえしてあれば、Android Studioのインストーラーの指示にしたがって「次へ次へ・・・」と進んでいけば特に迷うところはないと思います。 Android SDKのダウンロードと設定も、デフォルトでやってくれるようになっているので、特に設定を変更することなく進めばいいです。 Android Studioのインストールが終われば、「以前のバージョンの設定を引き継ぐかどうか」と聞いてきますが、新規でインストールする場合関係ない話です。 そのままOKを押せばいいです。 Android Studioのインストールが終わると、今度はAndroid SDKのダウンロードと設定が始まります。 いろいろダウンロードしてくるため時間がかかりますが、これが終わればAndroid Studioのインストールは終了です、お疲れ様でした。 以下はWindowsのユーザー名に日本語が含まれている方向けの話です。 Android SDKについて ここでダウンロードされるのは最新バージョンのみなので、Android Studioのセットアップが終了したら自分の環境に合わせて設定を行うといいです。 ドロイド君のお腹が下矢印になっているアイコンを押すと、Android SDK Managerが起動します。 さらに、Android SDKのダウンロードされる場所ですが、ユーザーディレクトリのAppDataディレクトリになります。 ここで、Windowsのユーザーディレクトリが日本語の場合、ちょっと気持ち悪いことになります。(私の場合ユーザー名が日本語になっているので、モザイクの部分が日本語になってます) Android Studioでは、プロジェクトの保存先に日本語が含まれている場合怒られるなど、パスに日本語が含まれているとうまく動作しません。(たぶんしません) Android SDKについてもそれはおそらく当てはまるので、このままにしておくのは良くない気がします。 対策はAndroid SDKの保存先を変えることです。 日本語パス対策 Android SDKの保存先を変更する まずはAndroid Studioを終了させます。 そうしたらAndroid SDKのフォルダを表示し、切り取ってCドライブ直下へ移動させます。 C:¥Users¥ユーザー名¥AppData¥Local¥Android¥sdk AppDataフォルダは隠しフォルダなので、初期状態では表示されません。すべてのファイルとフォルダを表示するようにして、Anroidフォルダをカット&ペーストで移動させます。 移動が完了したらAndroid Studioを起動します。起動するとAndroid SDKの場所を聞かれるので、改めて移動先のAndroid SDKの場所を指定してやります。 Cドライブ直下に移動していればC:¥Android¥sdkです。 こうすることでユーザー名が日本語でもAndroid Studioを使うことができます。プロジェクトの保存先に日本語名を含まないようにしてやれば、問題なくAndroid Studioを運用できると思います。 ちなみに、Android SDKの場所はProject Structureからも指定可能です。 Android SDKを手動でダウンロードしていてそちらを使いたい場合はここで設定できます。

Android StudioでButterKnifeを使う

ButterKnifeはViewのインジェクションに特化したライブラリです。 Android Studioで利用する場合はとても簡単で、app/build.gradleのdependenciesに1行追加するだけです。 compile 'com.jakewharton:butterknife:6.1.0' これだけで使えるようになります。 ButterKnifeを使うことでfindViewById()をコードからなくすことができるので、ActivityやFragmentのコードがすっきりします。 public class MainActivity extends ActionBarActivity { @InjectView(R.id.test) TextView mTextTest; @InjectView(R.id.hello) TextView mTextHello; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); mTextTest.setText("ButterKnife Sample!!!"); mTextHello.setText("Next text here!!"); } } @InjectView(ViewのID)で、TextViewなどを保持するクラスフィールドを指定してやります。 後はonCreate()内でButterKnife.inject(this)を実行すれば、findViewById()を使うことなく、Viewに対する操作ができるようになります。 扱うViewが多くなればなるほど、その効用が実感できるようになります。 ButterKnifeを使わない場合、以下のようになります。 public class MainActivity extends ActionBarActivity { TextView mTextTest; TextView mTextHello; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); (TextView) mTextTest = (TextView) findViewById(R.id.test); (TextView) mTextHello = (TextView) findViewById(R.id.hello); mTextTest.setText("ButterKnife Sample!!!"); mTextHello.setText("Next text here!!"); } } Android Studioだとbuild.gradleに1行追加するだけで使えるようになるので、とても便利ですね。 GitHub – ButterKnife

Android Studioで新規プロジェクト作成時のテンプレートを作る

【Android】もっと先へ「加速」したくはないか、少年 〜Project Template編〜を見て、実際に自分でも試してみました。 パッケージ構成はBest practices in Android developmentの通りに再現することにしました。 パッケージ構成以外に、リソースファイルもテンプレートで追加させることができるので、color.xmlなどよく使うものがあれば追加してやると便利かもしれません。 AndroidStudio.appの中に直接作成したら、アップデートの際にどうなるか分からなかったので、Gitで別途管理することにしました。作成したテンプレートはGitHubで公開しています。 注意点 テンプレートファイルを書き換えても、都度Android Studioを再起動させないと変更が反映されません。ちょっと変わった処理をしようと思うと、動作確認が面倒くさいです。 ディレクトリにファイルを置けばそれが反映されるわけではなく、recipe.xml.ftlで指定したファイルが作成されます。rootディレクトリ以下に作ったディレクトリが勝手に再現されるのかと思っていたら全然違いました。 template.xml template.xmlはテンプレートファイルの名前や入力項目などを決めるファイルになっています。 <parameter>タグを追加することで、入力項目を増やすことができます。 ちなみにこのテンプレートでは、package-info.javaの@authorを変更できるようにしてみました。 <parameter id="author" name="Author" type="string" default="Gen" help="This uses javadoc @autohr in package-info.java." /> package-info.javaでは以下のようにして参照できました。idで指定した文字列で参照できるみたいです。 /** * Activities. * @author ${author} */ package ${packageName}.activities; 参考 Custom Projects In Android Studio Android Studioのバージョンアップができない 注意点として上記のテンプレートを追加すると、以下ののようなメッセージが表示されAndroid Studioのバージョンアップができません。 そのため、バージョンアップする際には追加したテンプレートを手動で削除してやる必要があります。 バージョンアップすると追加したテンプレートは消されてしまうのではと思っていたのですが、そもそもバージョンアップ自体ができませんでした。 プロジェクトテンプレートを自分で追加する場合、テンプレートで得られるメリットと、バージョンアップ時に手動で消さなければならないというデメリットを天秤にかけてから行うようにしてください。

Android Studioのプレビュー画面でActionBarが表示されないと勘違いした話

最近Android Studioを使ってプロジェクトを作った際に、ActionBarが表示されていないことが気になっていました。 以前までだと、特に何もしなくとも表示されていたはずのActionBar。自分でも特にActionBarのためにコードを書いたり、XML書いたりした覚えがないので、どうすればいいのやらサッパリでした。 実際にはタイトルバーの部分にアプリアイコンが表示されなくなってるだけであって、ActionBarがなくなっているわけではありません。画面のプレビューではActionBarが表示されなくなっていたせいで、私が勘違いしていただけでした。 上記の画像は、両方共ソースコードに変化はありませんが、targetSdkVersionと利用するサポートライブラリのバージョンが異なるものです。 左がtargetSdkVersionが20、app/build.gradleのdependanciesで利用するサポートライブラリのバージョンをcom.android.support:appcompat-v7:20.+と指定したもの。 右はAndroid Studio 1.0の新規プロジェクト作成ウィザードで作られたデフォルトの状態のもの。(targetSdkVersion21,com.android.support:appcompat-v7:21.0.3) API21(Lolipop)からMaterial Designが導入されたことによる影響なんでしょうね。新しく導入されたToolBarを使えということなんでしょうが、使い方がよく分からず苦戦中です。 ちなみに右の状態でも、エミュレーターで実行するとちゃんとActionBarが表示されます。(ただし従来のようなアプリアイコン+タイトルの表示ではありません) ToolBarのClass Overviewに以下の記述があり、Lolipop以降では従来のアプリケーションアイコン+タイトルはやめろってことなんでしょうね。 In modern Android UIs developers should lean more on a visually distinct color scheme for toolbars than on their application icon. The use of application icon plus title as a standard layout is discouraged on API 21 devices and newer. 確かにマテリアルデザインで設計された画面の中でアプリアイコンがぽつんとあると、浮いた感じがして気持ち悪い気もしてきました。 それにしてもデザインに対するハードルがどんどん上がっていって辛い・・・。

MacをYosemiteにバージョンアップしたらAndroid Studioが起動しなくなった

MacをYosemiteにバージョンアップしたらAndroid Studioが起動しなくなりました。 原因はYosemiteへのアップデートでJDK 1.6が消えてしまったことが原因のようでした。(消えたのか参照できなくなったのかはよく分かりませんが・・・) ターミナルで/usr/libexec/java_home -v 1.6と打つと、Unable to find any JVMs matching version “1.6”.と表示されました。JDK 1.7と1.8はバージョンアップ前と同じように存在してくれてましたが、1.6だけ参照できなくなってました。 対策はJDK 1.6(Java 6)を再インストールすればOKです。JDK1.6(Java 6)はこちらからダウンロードできます。

Android StudioでRobolectricを使いJUnit4によるユニットテストを行う

Android StudioでJunit4を使ったテストを実行する方法は、今のところ2通りあるみたいです。 TestRunnerを指定して行う(android-junit4を使う) Robolectricを使う TestRunnerを指定した方法だと、IDEでテストの実行結果が確認できるので便利です。ただし、設定がややこしいのが不便なところです。簡単に取り込める方法があれば教えて欲しいです。 対してRobolectricを使う場合は、テストの実行結果をブラウザで確認しなければならないというデメリットはありますが、導入方法が比較的簡単です。今回はRobolectricを使ってJunit4によるユニットテストを実施する手順を紹介します。 Qiitaのこちらの記事があってようやくまともに入れることができました。感謝感謝。 1. プロジェクトを作成する Android StudioのメニューからFile > New Projectを選択し、新規プロジェクトを作成します。単にプロジェクトを作成するだけです。別に既存のプロジェクトを使うなら飛ばして問題無いです。 2. build.gradleの編集 プロジェクトルートのbuild.gradleにclasspath 'org.robolectric:robolectric-gradle-plugin:0.13.+'を追記します。(app/build.gradleではないです) // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:0.13.2' classpath 'org.robolectric:robolectric-gradle-plugin:0.13.+' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } 新規プロジェクトの場合、build.gradleがこうなればOKです。(この例ではAndroid Studio 0.8.14を使っています) 3. app/build.gradleの編集 やることは3つです。 apply plugin: ‘robolectric’の追加 dependenciesの追加 robolectricディレクティブの追加 apply pluginの追加 app/build.gradleの2行目(apply plugin: 'com.android.application'のすぐ下)にapply plugin: 'robolectric'を追加します。 dependenciesの追加 RobolectricとJunit4を追加をします。 androidTestCompile 'org.robolectric:robolectric:2.3' androidTestCompile 'junit:junit:4.11' robolectricディレクティブの追加 robolectric-gradle-pluginのサンプルを利用してコピペします。 そのままだとGradle Syncがうまくいかないので、一部削除しています。 robolectric { // configure the set of classes for JUnit tests include '**/*Test.
Read full post gblog_arrow_right

Android StudioでJDKのパスを指定する

久しぶりにAndroid Studioでサンプルアプリを作ろうとしたら、JDK7を使えと怒られてしまいました。 設定を確認すると、JDK6を使うように設定されていました。 Project Structureはcmd + ;で開きます。 JDKは1.8をインストールしていたはず・・・と思って確認すると、やっぱり1.8がインストールされていました。 コマンドプロンプトを開いてjava -versionでインストールされているJavaのバージョンが確認できます。(正確にはJREのバージョンの確認ですけど) しかし、/System/Library/Java/JavaVirtualMachinesにはJDK6しかない。調べてみると、JDK1.7以降ではインストールされているディレクトリが異なる模様。 それぞれのJDKのディレクトリを確認するには、コマンドプロンプトで/usr/libexec/java_home -v バージョンで、JDKのバージョンごとのインストールされているディレクトリが確認できます。 とりあえずJDK7を使えというエラーメッセージだったので、JDK7のディレクトリを指定してやることでエラーメッセージが消えました。 ちなみに、JDK7はOracleのサイトからダウンロードできます。

Android Studio 0.8.12がリリースされています

Android Studio 0.8.12がCanary Channelでリリースされています。 Canary Channelでリリースといっても、今回はパッチ形式での配布ではないので通知がきていないかもしれません。今回のバージョンアップでは、新たにAndroid Studioをまるごとダウンロードする必要があります。(バグへの対応のため、パッチ形式による提供はできなかったそうです) 0.8.12での変更点 新しくなったAVDマネージャー 画面サイズが分かりやすく表示されているのがありがたいですね。見た目が今風になっているだけでなく、設定がしやすくなったように思います。 Gradle WrapperがHTTPSで通信するようになった Mavenのリポジトリ(JCenter)からライブラリを取得したりする際に、HTTPSで通信するようになったようです。セキュリティ面の強化ということなんでしょうかね。 レイアウトXMLエディターの初期画面をTEXTモードに 新しくレイアウトXMLファイルを作成した際に、エディタがグラフィカルモードではなくテキストモードで開かれるようになります。GUIでデザインなんかしないよという人にはありがたい機能かもしれません。 その他いろいろ string.xmlからTranslation Editorが開けるようになったり、新規プロジェクト作成時にプロジェクトビューがAndroid Project viewがデフォルトで選ばれるようになったり(今まではProject viewがデフォルト)しているようです。 詳細は0.8.12のリリースノートを参照してください。 以前のバージョンのAndroid Studioと共存させる方法 Macの場合の話ですが、今まで使っていたAndroid Studio.appの名前を変更するだけで、Android Studioの旧バージョンと新しいバージョンを共存させることができます。 分かりやすいようにバージョンを後ろに追記してやるのがいいと思います。名前がAndroid Studioと被らなければいいので、別にAndroid Studioあ.appとかでも問題ないです。