Support library のソースコードを Android Studio 上で読む方法
Android Support library の http://t.co/64y7eYWAYH:recyclerview-v7 などのソースコードが AOSP のリポジトリの frameworks/support の中に見当たらないんだけどどこにあるんだろう。
— nobuoka (@nobuoka) 2014, 10月 22
v7 recyclerview library などのソースコードを読みたかったけどどこにあるかわからなくて困ってたら同僚に 「Android SDK の中に入ってましたよー」 って教えてもらった。
前提として、Android Studio で Support library を使う場合は、SDK Manager で Extras の Android Support Repository をインストールして、build.gradle の dependencies
に依存を書くことになる。 Android Support Repository をインストールすると、ファイルシステム上の Maven リポジトリとして <SDK Directory>/extras/android/m2repository/ ディレクトリが作成され、その中に各種サポートライブラリの AAR パッケージやソースコードを固めた JAR、Javadoc の JAR ファイルなどが配置される。
ソースコードを固めた JAR ファイルを Android Studio に認識させれば Android Studio 上でソースコードを読めるようになる。
方法
Android Studio 上の、例えば CardView
というクラス名の上で Ctrl + B
を押すと CardView
の定義ファイルに移動するが、ソースコードを認識させていない場合は下記のようにクラスファイルが開く。
上の方に 「Attach Sources...」 とあるので、それをクリックしてソースコードが SDK のディレクトリの中にあるソースコードが固められた JAR ファイルを選択する。
そうすると次のようにソースコードが表示されるようになる。
感想
ちまちま設定するの面倒だけど、とりあえずこの方法でソースコードを読めるようになる。
Android Studio (というか IntelliJ IDEA) が Maven リポジトリから依存ライブラリを落としてくるときに自動的にソースコードも取ってくるように設定できると思うんだけど、どうやるのかわからなかった。 Gradle の idea プラグインにそういう機能があるけど、それを使ってもソースコード取ってきてくれなかった (既存のプロジェクトの build.gradle に idea プラグインを追記して試しただけなので、方法がおかしいのかも)。
関連ページ
- Support Library について: Android アプリ開発のためのサポートライブラリについて - ひだまりソケットは壊れない
- Android Studio で support library のソースコードをアタッチする | DevAchieve : AOSP のリポジトリを clone してきてソースコードとして指定するという話。 でも今 AOSP に Support Library 21.0.0 で追加されたモジュールが見当たらない。
- Android Studio - Attach Source - web系な備忘録 : こっちも AOSP からソースコードを clone する方法。 Android Studio の設定画面での設定方法も説明されてるけど UI 変わってて今ではだめそうだった。