DroidKaigi 2016での@konifarさんによる発表動画はこちらです。
発表者
- @konifar
- TapTrip: グローバルSNS
- TapTripのリニューアルから本格的にAndroid開発に
- 最初のOSSがAndroid Studioプラグインだった
プラグイン開発の特徴・おさらい
- IntelliJベース
- Java7だと動かないのでJava6が必要
- 詳しくはQiitaに!
- 問題はここから先で...
プラグインを実際につくるときに役立つ実践的な話をします
覚えておくべきクラスと役割
- AnActionEvent
- 右クリックなどのイベントを取得する
- ファイル別に右クリックメニューの中身を変えたいときとか
- Project
- Projectのディレクトリや、SDKのバージョンなどが取得できる
- ルートパスやファイル一覧も取得できる
- Editor
- エディタの内容を取得する
- 範囲選択中のテキストを取得したり
- エディタを↓までスクロールしたり
- Document
- エディタの内容を検知することもできる(インクリメンタルな動きを作るときに使う?)
- PsiFile
- カーソル位置のJavaクラスを取得する
UIの実装
- Dialog
- DialogWrapperを使う
- 呼び出したいところでshow()するだけ
- HintManager
- いわゆるヒント吹き出しみたいなやつ
- Notification.Bus
- いわゆるtoastみたいなやつ
- FileChooser
- ファイル選択のUI
悩んだときの調べ方
- 公開されているコードを読むのが一番はやい
- Android Studio Plugin Repository
- おすすめのプラグイン
- intellij-sdk-docs
- android-percelable-intellij-plugin
- android-drawable-importer-intellij-plugin
- adb-idea
- ほんとどうしようもなくなったら...
- Android Studioのコードを読むと良い。
- コマンドやバージョン指定はAndroid Project SiteページのBuild Overviewを参考に
まとめ
- 基本的なクラスは覚えておく
- UIもDialogやNotificationは標準のやつを
- 似たようなコードを探してみる
- IntelliJ Plugin勉強会を近いうちにまた開催します
質疑応答
- 1つのPluginのコード量的にはどのくらい?
- クラスの行数10いかないくらい、全体でも1000行くらいなので読むのには苦労しない