torutkのブログ

ソフトウェア・エンジニアのブログ

Android Studioを使っていて思わず書き残したくなった事柄(1)

Android Studioを使い出して2ヶ月ほど、Gradleとあいまって最初はかなり手厳しい状況でしたが、さいきん何とか使い方が見えてきた気がします。

なんちゃってラムダ式

入手したサンプルコードを展開してAndroid Studioで開くと、次のようなコードがありました。

AndroidJavaは、Java SE 7相当で、Java SE 8のラムダ式には対応していません。ですが、これはラムダ式に見えます。えっ、まさかサンプルコードはretrolambdaを使っている?
bulid.gradleを調べてみましたがつかっている形跡はありません。コードをよく見ると行番号の脇にコードフォールディングの[+]記号が出ています。これをクリックして展開すると次のようになりました。

つまるところ、Android Studioが(IntelliJ IDEAが)、無名クラスの定義をラムダ式に見せかけてコードを畳み込んでいただけ、ということでした。個人的にはちっともうれしくない機能ですが、受け狙い?

けっこうすごいコード補完

AndroidのViewクラスには、ユーザー操作のイベントを受け取るsetOnXxxxListenerメソッドが多数用意されています。普通にメソッド名補完をすると、setOnとキー入力しただけでは多数のメソッドが候補として表れ、挿入したいメソッド名がなかなか出てきません。

Android Studioでは、[s][e][t][l][i][s][t][e]とかなり適当なメソッド名の断片をキー入力すると、次の図のようにキー入力した文字が含まれるメソッド名が補完候補として残ってくれます。

これならば、メソッド名の前半が同じものが多数あっても、キー入力をそれほどしなくても目的のメソッドを出すことが簡単にできます。

開発チームでの共有

Android Studioでプロジェクトを作成すると、.gitignoreファイルが生成されるので、最初からリポジトリで共有するファイルと共有すべきでないファイルが分別されています。

しかし、Android Studioのバージョンアップが早いことや、Android SDKの各ツールのバージョンがまちまちということも相まって、Android Studio 1.1で作成したプロジェクトをAndroid Studio 1.2で開いたり、その逆のパターンなどが発生すると、エラーが出て収拾付かなくなるケースがよく発生します。

いろいろ試行錯誤をしてみたのですが、現状の結論としては

というところを落としどころにして様子見しています。

ビルドが遅い

Gradleの問題と思われますが、コードの修正から実行のサイクルに時間が(分オーダーで)かかっています。
一度ビルドを通して必要なもののダウンロードが終わったら、offlineにチェックを付けて実行するとかの工夫が要りようです。