これなに?
EclipseからAndroid Studioに乗り換え(ようと思っ)たんだけど、キーバインドとか挙動がいろいろ違くて慣れるのつらっていう僕(@ushi3_jp)みたいな人用のメモ。
基本的に、Eclipseチックにできるところは設定方法を、無理な場合はASでの操作を書いています。
なお、僕はWindowsユーザーなので、Macの人はASの Settings を Preferences と脳内変換してください。
IDE設定
起動すると、最後に開いてたプロジェクトが開かれる
俺は別のプロジェクトを開きたいのに、以前のプロジェクトが自動で開かれて、しかもgradle動き始めるからつらい…
Settings -> Appearance & Behavior -> System Settings
Startup/Shutdownの Reopen last project on startup のチェックを外す
コードの折り返し文字数
Settings -> Code Style
Right margin (columns) の値を変更する。
KeyMap
KeyMapのプリセットにEclipseあるから、切り替えてみたけど違和感ある…
KeyMapをEclipseにした人用
左辺生成
new ArrayList<>()とか書いて、左辺を自動生成する。Eclipseだと Ctrl+2→L など。
ASでは、Ctrl+Alt+V で左辺が生成されます。
なお、Classスコープでは左辺生成できない模様。
コンストラクタやgetter/setterの生成
Eclipseだと、コンストラクタはClassスコープでCtrl+Space で作れたりする。
getter/setterのコマンドは忘れた。
ASでは、Alt+Insert で自動生成候補が出てきます。
何かしら自動生成したかったらとりあえずAlt+Insert押してみるとよさげ。
選択行の移動
選択している行を上下方向に移動する。EclipseだとAlt+上下
if文の中などでやってみるとスコープごと移動される、なんか違う…
Alt+上下 はMove Statement Down/Up になっています。
Move Line Up/Down に変更すると行単位で移動します。
選択行のコピー
選択している行を上下方向にコピーする。EclipseだとCtrl+Alt+上下
上押しても何も起きないんだけど…
Ctrl+Alt+下 しか定義されてないです。
上にコピーしたいんだけど…
残念ながら上下の区別がないので、下方向にしかコピーできないです。
呼び出し元、型階層
呼び出し元は Ctrl+Alt+H、型階層は F4
コーディング
ClassなどをホバーしてもJavadocが出てこない
Settings -> Editor -> General
Otherカテゴリーの Show quick doc on mouse move をチェックする。
Delay をいじることで、ホバーしてからdocが出るまでの時間を調整できる。
sysoutでSystem.out.printlnが出てこない
Editor -> Live Templates
Javaではoutputグループの定義が有効です。デフォルトでは、sout が System.out.println となっています。必要であれば、Abbreviation の内容を変更することで、好みのテンプレートキーワードにできます。
同設定のiterationsグループには、for文のテンプレートが定義されています。デフォルトでは for-each のテンプレートが iter で呼び出せるようになっています。
1行コードのメソッドが勝手にcollapse表示される
Settings -> Editor -> General -> Code Folding
Collapse by defaultの One-line methods のチェックを外します。
getter/setter生成時にJavadocを付けてほしい
そんな機能はない
JavaDoc ってプラグイン入れてみたら?と言われました。
インストールすると、Alt+Insert にJavaDoc自動生成する項目が増えるぞ!
メンバ変数mHogeのgetterの自動生成がgetmHoge()になってしまう
Settings -> CodeStyle -> Java
Code Generation タブにある Naming グループのFieldのName prefixに「m」を入力すると、アクセサメソッドを自動生成するときにprefixを除いてくれます。
必要に応じて、Static fieldに「s」とか入れとくといいかもしれないです。
プロジェクト構成
New Projectしたんだけど、俺の知ってるプロジェクト構成じゃなくて死ぬ…
Android Studioはgradleのマルチプロジェクト構成になってます。なので、Eclipseのときとはディレクトリ構造が違います。
SampleProject
│ build.gradle
│
├─app
│ │ build.gradle
│ │
│ ├─libs
│ └─src
│ ├─androidTest
│ │ └─java
│ │
│ └─main
│ │ AndroidManifest.xml
│ │
│ ├─java
│ └─res
│
├─build
└─gradle
Eclipseで言うと、プロジェクトはappディレクトリにあたります。ただ、なんかAndroidManifest.xmlとかresとかの位置が違いますね。これは、build flavorsの影響でこのような構成になっています。(たぶん
ASはプロジェクトのソースディレクトリをbuild.gradleの記述を元に表現しています。
なので、ワシはこんなディレクトリ構造でやりとうない…という方はapp/build.gradleを書き換えるといいでしょう。
// …
android {
// …
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src/main/java']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
プロジェクト構成を変えたい場合は、android.sourceSetsを定義します。
上のsourceSetsには、manifest、java、res、assets のファイル(ディレクトリ)が定義されています。逆に言うと、 build.gradleを見ればプロジェクトの構成がわかります。
これを適用させると、プロジェクトは以下の構成に切り替わります。
SampleProject
│ build.gradle
│
├─app
│ │ AndroidManifest.xml ←
│ │ build.gradle
│ │
│ ├─assets ←
│ ├─libs
│ ├─res ←
│ └─src
│ ├─androidTest
│ │ └─java
│ │
│ └─main
│ └─java
│
├─build
└─gradle
ちなみに、AndroidManifest.xmlはあらかじめ自分で移動or生成しないとgradleが通らない ので注意してください。
チーム開発でこれをやる場合は、念のためメンバーと相談してからやりましょう。