android framework code readingのしおり ver 1.2

35
Android Framework Code Readingのしおり ver 1.2

Upload: shinobu-okano

Post on 19-Jan-2017

134 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Android Framework Code Readingのしおり ver 1.2

Android Framework Code Readingのしおり

ver 1.2

Page 2: Android Framework Code Readingのしおり ver 1.2

目標

Page 3: Android Framework Code Readingのしおり ver 1.2

目標

• 読み始めるにはどこから探せばいいのかわかる

• Android Frameworkのコードがなんとなく読めるようになる

• もうAndroid怖くない (`・ω・´)

Page 4: Android Framework Code Readingのしおり ver 1.2

用意するもの

Page 5: Android Framework Code Readingのしおり ver 1.2

用意するもの

• お好みのEditor

• OpenGrok

• https://sites.google.com/site/devcollaboration/codesearch

• クソコード読んでもめげない気持ち

• 基本これだけ

Page 6: Android Framework Code Readingのしおり ver 1.2

読みやすい環境を作る

• Firefoxのツリー型タブという拡張がオススメ

• https://addons.mozilla.org/ja/firefox/addon/tree-style-tab/

• 読んでいるコードのメソッド呼び出しの階層とか管理しやすい

Page 7: Android Framework Code Readingのしおり ver 1.2

読みやすい環境を作るこんな感じー

Page 8: Android Framework Code Readingのしおり ver 1.2

OpenGrok

Page 9: Android Framework Code Readingのしおり ver 1.2

OpenGrok

• ソースコードをブラウザで閲覧できるもの

• methodへのリンクとか貼ってあって便利!!

• AndroidのソースコードもOpenGrok化してあります

• ソースコード手元になくても読めて便利!!

Page 10: Android Framework Code Readingのしおり ver 1.2

OpenGrokに慣れる

Page 11: Android Framework Code Readingのしおり ver 1.2

OpenGrokに慣れる

• Full Searchを指定する

• File Pathを指定する

• 基本上2つでだいたいOK

• 困ったらHelpを見て使い方をマスターする

• http://tools.oesf.biz/android-6.0.0_r1.0/help.jsp

Page 12: Android Framework Code Readingのしおり ver 1.2

手元にコードをダウンロードする

• 全部のソースコードをダウンロードするのは大変

• OpenGrokからFile単位でダウンロードできる

• よく参照するファイルはダウンロードしておくと便利

• URLのxrefとrawにしてアクセスするとBrowser経由でダウンロードできるはず

Page 13: Android Framework Code Readingのしおり ver 1.2

手元にコードをダウンロードする

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

Page 14: Android Framework Code Readingのしおり ver 1.2

意外と手元に持っているソースコード

• 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

Page 15: Android Framework Code Readingのしおり ver 1.2

手軽に読めそうなところ

• frameworks/

• Android Frameworks全般のコード

• frameworks/base/core/java/

• Android SDK全般のコード

Page 16: Android Framework Code Readingのしおり ver 1.2

手軽に読めそうなところ

• packages/apps/

• システムアプリ全般のコード

• http://tools.oesf.biz/android-6.0.0_r1.0/xref/packages/apps/Settings/

• Settingsアプリのコード(オススメ!)

Page 17: Android Framework Code Readingのしおり ver 1.2

役に立ちそうなリンクまとめてます

https://github.com/AndroidFrameworkCodeReading/Android-Framework-Code-Reading

Page 18: Android Framework Code Readingのしおり ver 1.2

GopenGrok

https://github.com/operando/gopen-grok

コマンドラインからOpenGrokの

検索ができるツール

Page 19: Android Framework Code Readingのしおり ver 1.2

GopenGrok

https://github.com/operando/gopen-grok

$ gopen-grok -s Activity

Page 20: Android Framework Code Readingのしおり ver 1.2

GopenGrok

https://github.com/operando/gopen-grok

Page 21: Android Framework Code Readingのしおり ver 1.2

GopenGrok Install

https://github.com/operando/gopen-grok

$ go get -d github.com/operando/gopen-grok

$ go install github.com/operando/gopen-grok

Page 22: Android Framework Code Readingのしおり ver 1.2

Logcat逆引き

Page 23: Android Framework Code Readingのしおり ver 1.2

Logcat逆引き

• Logcatに流れているログはコード上に書いてあるはず(動的なもの以外

• 調べたい機能っぽいものが流してるLogcatから特定のキーワードで検索をかける

Page 24: Android Framework Code Readingのしおり ver 1.2

Logcat逆引き• 例えば、以下のログのgetDirectorySizeってどうやって調べてるか知りたい!として…

Page 25: Android Framework Code Readingのしおり ver 1.2

Logcat逆引き• じゃとりあえず「getDirectorySize」ってキーワードでOpenGrok検索する

Page 26: Android Framework Code Readingのしおり ver 1.2

「getDirectorySize」の検索結果見事にそれっぽもの引っかかった

Page 27: Android Framework Code Readingのしおり ver 1.2

コードを見るとこんな感じ• IMediaContaninerServiceねーへー

• Logcatに流れてたのは 438行目のやつ

Page 28: Android Framework Code Readingのしおり ver 1.2

Logcat逆引き

• うまくヒットすれば最高の技

• どのログが良さそうか見極めるのは職人技

• Logcatに流れているメッセージが静的なものか動的なものか判断するのは職人技

Page 29: Android Framework Code Readingのしおり ver 1.2

まとめ方

Page 30: Android Framework Code Readingのしおり ver 1.2

あとで見返すようにこう書くといいかもタイトル見出し

Page 31: Android Framework Code Readingのしおり ver 1.2

あとで見返すようにこう書くといいかも

わかったことを箇条書き

Page 32: Android Framework Code Readingのしおり ver 1.2

あとで見返すようにこう書くといいかも

重要なところはコードのURLと実際のコードをコピペして書いておく

Page 33: Android Framework Code Readingのしおり ver 1.2

あとで見返すようにこう書くといいかも

• Markdownとかで適当に書く

• コードのURLはめっちゃ大事

• 書いたらGithubやGistに置いておくと検索もできて楽

Page 34: Android Framework Code Readingのしおり ver 1.2

JobScheduler-Code-Reading

https://github.com/operando/JobScheduler-Code-Reading

まとめ方の参考にどうぞー

Page 35: Android Framework Code Readingのしおり ver 1.2

Thanks!!