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

Android Studio 0.8.12がCanary Channelでリリースされています。

Canary Channelでリリースといっても、今回はパッチ形式での配布ではないので通知がきていないかもしれません。今回のバージョンアップでは、新たにAndroid Studioをまるごとダウンロードする必要があります。(バグへの対応のため、パッチ形式による提供はできなかったそうです)

0.8.12での変更点

新しくなったAVDマネージャー

新しくなったAVDマネージャー

画面サイズが分かりやすく表示されているのがありがたいですね。見た目が今風になっているだけでなく、設定がしやすくなったように思います。

Gradle WrapperがHTTPSで通信するようになった

Mavenのリポジトリ(JCenter)からライブラリを取得したりする際に、HTTPSで通信するようになったようです。セキュリティ面の強化ということなんでしょうかね。

レイアウトXMLエディターの初期画面をTEXTモードに

Prefer XML Editor

新しくレイアウトXMLファイルを作成した際に、エディタがグラフィカルモードではなくテキストモードで開かれるようになります。GUIでデザインなんかしないよという人にはありがたい機能かもしれません。

その他いろいろ

string.xmlからTranslation Editorが開けるようになったり、新規プロジェクト作成時にプロジェクトビューがAndroid Project viewがデフォルトで選ばれるようになったり(今まではProject viewがデフォルト)しているようです。

詳細は0.8.12のリリースノートを参照してください。

以前のバージョンのAndroid Studioと共存させる方法

Macの場合の話ですが、今まで使っていたAndroid Studio.appの名前を変更するだけで、Android Studioの旧バージョンと新しいバージョンを共存させることができます。

Read full post gblog_arrow_right

Android Studioでテスト用のディレクトリ名を確認する方法

テストコードを配置するディレクトリ名は、以前はinstrumentalTestという名前でした。しかし現在ではandroidTestという名前になっています。

Googleで検索すると、未だに「instrumentalTestというディレクトリを作成しよう」という情報もあるので注意が必要です。

と言っても、最近のAndroid Studioは最初からテスト用のディレクトリを用意してくれるようになったので、自分でテスト用ディレクトリを用意する必要性もなくなっています。

ちなみに自分の使っているAndroi dStudioのテスト用ディレクトリ名が何なのかは、app/app.imlを確認すればわかると思います。

app/app.iml

<sourceFolder ... isTestSource="true" />というタグを見れば、テスト用のディレクトリがandroidTestであることが分かります。

もし古いバージョンのAndroid Studioを使っている場合は、ここを見ることでディレクトリ名として何を使えばいいのかが分かります。

特定のブロックを選択するのに便利なショートカット

例えば<Button>タグのブロックを選択したりだとか、LinearLayoutの中身を選択したりだとか、そういう選択の仕方をする際に覚えておくと便利なショートカットです。

opt + ↓で選択範囲を1段階狭くし、opt + ↑で選択範囲を1段階広くします。

選択範囲を増やす・減らす

XMLだけでなく、Javaのコードでifブロックだけを選択したりするのにも利用できます。これでまた1つマウスの呪縛から解き放たれましたね。

Android Studioで使われているショートカットキーを調べる

Android Studioで使われているショートカットキーは、Preference > Keymapで確認することができます。

cmd + ,でPreferencesを開き、Keymapを選択すると、Android Studioで使われているショートカットキーを確認したり、自分でカスタマイズしたりすることができます。

ちなみにこのキーマップの設定ですが、「間違えて押してしまったショートカットキーで何か動作したけど、一体何をやっているのかわからない」というものを調べることにも使えます。

検索窓の隣にある虫眼鏡のアイコンを押すと、ショートカットキーから機能を検索することができます。逆引き検索ができるんですね。

ショートカットキーから機能を調べる

この機能を利用することで、ショートカットキーが割り当てられている機能を探したり、何も割り当てられていないショートカットキーを探したりすることができます。

IdeaVimでxキーで文字削除する際にレジスタを汚さないようにする

OSの機能(cmd + xcmd + v)ではなくIdeaVimのddを使う場合に、移動先にゴミがあったのでxキーで削除して、いざペーストしようとしたら、xキーで削除したゴミが貼り付けられてしまった。「なんでだよムキーっ」とイラッとした経験を持つ人はきっと多いはずです。

そんなことにならないように、xキーで文字削除する際にレジスタを書き換えないようにする設定です。正確に言うと、IdeaVimではなくVimの設定の話ですけどね。

~/.ideavimrcを作成して以下の2行を書くだけ。

nnoremap x "_x
vnoremap x "_x

意味としてはノーマルモードとビジュアルモードにおいて、Xキーのキーマッピングを"_xに書き換えるという意味です。

"_とはなんぞやという話ですが、これはブラックホールレジスタという特殊なレジスタを表しています。Xキーのデフォルトの挙動は、1文字デフォルトのレジスタに移動するというものですが、この移動先をブラックホールレジスタに指定してやるという意味になります。

編集したいファイルへ素早く移動する方法

エディタタブがたくさん開かれていくと、編集したい対象を探すのに苦労します。タブを1つずつショートカットキー使って移動していくのもいいのですが、それはそれで現在地を見失いがちで困りモノです。

Android Studioで現在開かれているファイルの一覧を表示したりできないのかなと思ったのですが、そのものズバリな機能は見当たりませんでした。とり得る対策は以下の2つかなと思います。

隠れているタブを表示する

Android StudioのメニューのWindow > Editor tabsの中にshow hidden tabsというものがあります。これを選択することで、ウィンドウ中に表示しきれていないタブを表示させることができます。

show hidden tabs

ちなみに初期設定ではショートカットが割り当てられていないので、私はcmd + shift + Pを割り当ててみました。タブの移動ショートカットの隣にあるので押しやすいかなと思っただけなんですけどね。

Keymapの設定

ファイル一覧から選択する

cmd + oを押すとこのような検索窓が開きます。ここで編集したいクラス名を入力してやると、対象のクラスに移動することができます。

Navigate class

レイアウトXMLをいじりたいといった場合には、検索対象をクラスではなくファイルにしてやると選べます。ショートカットはcmd + shift + oです。ただしファイルにすると、画像ファイルなども引っかかるようになるので、逆に探しにくいかもしれません。

さらにcmd + opt + oではSymbol検索になります。これはメソッド名やフィールド名などで検索を行うことができます。いじりたいメソッド名がはっきりしている場合はこれを使うと楽かもしれません。

Setter,Getterを自動生成する際にフィールド名先頭のmを無視する方法

Androidのコーディング規約で、非Publicかつ非staticなフィールドは、先頭にmつけるというものがあります。これに従ってコーディングしていくわけですが、そのままだととあることをしようとしたときに困ったことになります。それは、Getter,Setterを自動生成する時です。

ソースコードエディタ上でcmd + nもしくはctrl + enterを入力すると、Generateというポップアップが出てきて、そこでGetterやSetterの生成を行うことができます。

例えば作成しているクラスがmHogeというフィールドを持っていて、Setterを生成するとしましょう。

ここで何も考えずにSetterを作成すると、生成されるメソッド名はsetmHoge()となります。そう、余計なmが一緒についてくるのです。この場合、通常はsetHoge()としたいでしょうから、これでは非常に面倒くさいことになります。

これはAndroid Studioの設定を変えることで対処できます。

cmd + ,でPreferenceを開き、Code Style > Javaを選択、Code Generationのタブを開きます。そしてFieldのName prefixの欄にmを入力してやります。これだけでオッケー。

Code Generation

ついでにコーディング規約でstaticフィールドの先頭にはsをつけるという規約があるので、Static fieldにsも追加しておきます。

これでSetterを生成した際にsetHoge()と解釈してくれるようになります。

Android Studioと銘打っているのに、なぜコーディング規約に従った設定になっていないのか不思議で仕方ありません・・・。

Android Studioのエディタでタブの切り替えをキーボードを使って行う

Android Studioで作業していると、エディタのタブがどんどん増えていきます。タブが画面内に収まりきらなくなったらマウスで選択するのが非常に面倒くさくなります。そんなときはキーボードショートカットを利用しましょう。

cmd + ,でPreferencesを開き、キーマップを選択します。そのままだとキーマップ全てが表示されて非常に見づらいので、検索窓にtabと入力してやると、タブ関連のキーマップのみに表示を絞ることができます。

キーマップ エディタタブの切り替え

キーマップの表示上はcmd + shift + ]で順送り、cmd + shift + [で逆送りですが、キーボードの配列がJIS配列の場合この通りに動きません。これはAndroid StudioのベースとなっているIntelliJ IDEAのキーマップがUS配列に依存しているからだそうです。(他のキーマップでも同様のことが起こる)

実際にキーマップを変更してみるとわかりますが、[を入力すると]が表示され、]を入力すると\が表示されます。なんとややこしいことか・・・。

JIS配列のキーボードの場合、タブの移動のショートカットはcmd + shift + [が順送りで、cmd + shift + @が逆送りになります。

ファイル名の付け方の罠 不用意にハイフンを使わない

レイアウトXMLのファイル名、drawableに用意する画像のファイル名、自分で作ったカスタムスタイルの名前などなど。これらの名前の中にハイフンを使うとビルドが通らないことがあります。

ハイフンを使ってもビルドをかけるまでエラーと表示されなかったり、名前にハイフンが入っているせいでレイアウトプレビューがうまく表示されなかったりすることがあります。この原因がファイル名等にハイフンを使っているせいだとはなかなか気づけません。

命名規則には、例えばレイアウトXMLのファイル名に大文字が使えないというのもありますが、これはAndroid Studioがちゃんと指摘してくれるので分かりやすいです。ファイル名なら指摘してくれるのでわかりますが、例えば独自のスタイル名については指摘してくれません。

私は普段ファイル名の区切りにハイフンをよく使うので、エラーだと直接指定されないとついついハイフンを惰性で使ってしまいます。レイアウトのレンダリングプレビューがちゃんと表示されないな、なんでだろう・・・とすごい悩んでいたのですが、原因は使用しているスタイルの名前にハイフンを使っているせいでした。

Android開発で名前をつけるのには、ファイル名にかぎらずスタイル名などでもハイフンは使わないよう気をつけましょう。

メソッドの引数を知りたいときに便利なショートカットキー

Android Studioでコーディングしている時に、何らかのメソッドを叩くと引数の一覧が表示されます。

Parameters popup

これが非常に便利なんですが、能動的にこれを出す方法が分かりませんでした。コード補完で入力していると勝手に出てきてくれて便利なんですが、ちょっとカーソルをよそにやると消えてしまう。再度出す方法が分からないので、いちいち今まで入力したものを消してメソッド部分から再入力してました。

すごい便利なのにこれなんなんだろう・・・とモヤモヤしていたのですが、ようやく正体がわかりました。この機能はParameter Infoという機能で、Android Studioの上部メニューのViewの部分から呼び出せます。

Parameter Info

ショートカットキーはCmd + pです。これでコーディングがかなり捗ります。