android framework code readingのしおり ver 1.2
TRANSCRIPT
Android Framework Code Readingのしおり
ver 1.2
目標
目標
• 読み始めるにはどこから探せばいいのかわかる
• Android Frameworkのコードがなんとなく読めるようになる
• もうAndroid怖くない (`・ω・´)
用意するもの
用意するもの
• お好みのEditor
• OpenGrok
• https://sites.google.com/site/devcollaboration/codesearch
• クソコード読んでもめげない気持ち
• 基本これだけ
読みやすい環境を作る
• Firefoxのツリー型タブという拡張がオススメ
• https://addons.mozilla.org/ja/firefox/addon/tree-style-tab/
• 読んでいるコードのメソッド呼び出しの階層とか管理しやすい
読みやすい環境を作るこんな感じー
OpenGrok
OpenGrok
• ソースコードをブラウザで閲覧できるもの
• methodへのリンクとか貼ってあって便利!!
• AndroidのソースコードもOpenGrok化してあります
• ソースコード手元になくても読めて便利!!
OpenGrokに慣れる
OpenGrokに慣れる
• Full Searchを指定する
• File Pathを指定する
• 基本上2つでだいたいOK
• 困ったらHelpを見て使い方をマスターする
• http://tools.oesf.biz/android-6.0.0_r1.0/help.jsp
手元にコードをダウンロードする
• 全部のソースコードをダウンロードするのは大変
• OpenGrokからFile単位でダウンロードできる
• よく参照するファイルはダウンロードしておくと便利
• URLのxrefとrawにしてアクセスするとBrowser経由でダウンロードできるはず
手元にコードをダウンロードする
http://tools.oesf.biz/android-6.0.0_r1.0/xref/frameworks/base/core/java/android/app/Activity.java
http://tools.oesf.biz/android-6.0.0_r1.0/raw/frameworks/base/core/java/android/app/Activity.java
意外と手元に持っているソースコード
• Android SDK Managerから取得できるもの
• /Applications/Android Studio.app/sdk/sources
• /Applications/Android Studio.app/sdk/extras/android/support
• /Applications/Android Studio.app/sdk/extras/android/m2repository/com/android/support
手軽に読めそうなところ
• frameworks/
• Android Frameworks全般のコード
• frameworks/base/core/java/
• Android SDK全般のコード
手軽に読めそうなところ
• packages/apps/
• システムアプリ全般のコード
• http://tools.oesf.biz/android-6.0.0_r1.0/xref/packages/apps/Settings/
• Settingsアプリのコード(オススメ!)
役に立ちそうなリンクまとめてます
https://github.com/AndroidFrameworkCodeReading/Android-Framework-Code-Reading
GopenGrok
https://github.com/operando/gopen-grok
コマンドラインからOpenGrokの
検索ができるツール
GopenGrok
https://github.com/operando/gopen-grok
$ gopen-grok -s Activity
GopenGrok Install
https://github.com/operando/gopen-grok
$ go get -d github.com/operando/gopen-grok
$ go install github.com/operando/gopen-grok
Logcat逆引き
Logcat逆引き
• Logcatに流れているログはコード上に書いてあるはず(動的なもの以外
• 調べたい機能っぽいものが流してるLogcatから特定のキーワードで検索をかける
Logcat逆引き• 例えば、以下のログのgetDirectorySizeってどうやって調べてるか知りたい!として…
Logcat逆引き• じゃとりあえず「getDirectorySize」ってキーワードでOpenGrok検索する
「getDirectorySize」の検索結果見事にそれっぽもの引っかかった
コードを見るとこんな感じ• IMediaContaninerServiceねーへー
• Logcatに流れてたのは 438行目のやつ
Logcat逆引き
• うまくヒットすれば最高の技
• どのログが良さそうか見極めるのは職人技
• Logcatに流れているメッセージが静的なものか動的なものか判断するのは職人技
まとめ方
あとで見返すようにこう書くといいかもタイトル見出し
あとで見返すようにこう書くといいかも
わかったことを箇条書き
あとで見返すようにこう書くといいかも
重要なところはコードのURLと実際のコードをコピペして書いておく
あとで見返すようにこう書くといいかも
• Markdownとかで適当に書く
• コードのURLはめっちゃ大事
• 書いたらGithubやGistに置いておくと検索もできて楽
JobScheduler-Code-Reading
https://github.com/operando/JobScheduler-Code-Reading
まとめ方の参考にどうぞー
Thanks!!