SlideShare a Scribd company logo
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
https://github.com/operando/gopen-grok
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!!

More Related Content

PDF
Android Framework Code Readingのしおり
Shinobu Okano
 
PDF
まったりAndroid Framework Code Reading #4
Shinobu Okano
 
PDF
Android Framework Code Readingのしおり ver 1.1
Shinobu Okano
 
PDF
まったりAndroid framework code reading #1
Shinobu Okano
 
PDF
まったりAndroid framework code reading #2
Shinobu Okano
 
PDF
まったりAndroid Framework Code Reading #3
Shinobu Okano
 
PDF
Inside Android N
Shinobu Okano
 
PDF
Pf部第24回資料
daye001
 
Android Framework Code Readingのしおり
Shinobu Okano
 
まったりAndroid Framework Code Reading #4
Shinobu Okano
 
Android Framework Code Readingのしおり ver 1.1
Shinobu Okano
 
まったりAndroid framework code reading #1
Shinobu Okano
 
まったりAndroid framework code reading #2
Shinobu Okano
 
まったりAndroid Framework Code Reading #3
Shinobu Okano
 
Inside Android N
Shinobu Okano
 
Pf部第24回資料
daye001
 

What's hot (16)

PDF
詳細設計とアプリケーション開発工程
康 新谷
 
PPTX
きつねさんでもわかる Firefox OS コードリーディング入門
Mizuho Sakamaki
 
PDF
はじめよう!Ossコードリーディング!!
友里 高島
 
PDF
5分で資料作ってSlideShareにアップロードする錬金術
Shinobu Okano
 
PPTX
groceryCRUDとtank_authで簡単に管理画面と認証機能を作る
Akishige TAKEKOSHI
 
PPTX
CodeIgniter3マニュアル和訳の方法と感想
Akishige TAKEKOSHI
 
PPTX
AndroiderがFirefoxOSアプリの多言化をしてみたら
Takaumi Kimura
 
PPTX
設計書からの卒業
Fumiyasu Sumiya
 
PPTX
Androidオススメライブラリ紹介
阪田 祐宇
 
PPTX
関西FXOS勉強会3rdGIG キーボード大好き!
雅彦 金井
 
PPTX
超効率的フロントエンドデバッグ術
Shinji Hashimoto
 
PDF
リーダブルコード勉強会 in 筑波大のまとめ
Kouhei Sutou
 
PPTX
オープンセミナー香川2012 LT
Kouta Imanaka
 
PDF
ChromeとAndroidの 過去・現在・未来 ver 0.1
Shinobu Okano
 
PPTX
Google Codelabsをやってみた
furusin
 
PPTX
20160910 可視性指定子と設計の話
Ryo Ohki
 
詳細設計とアプリケーション開発工程
康 新谷
 
きつねさんでもわかる Firefox OS コードリーディング入門
Mizuho Sakamaki
 
はじめよう!Ossコードリーディング!!
友里 高島
 
5分で資料作ってSlideShareにアップロードする錬金術
Shinobu Okano
 
groceryCRUDとtank_authで簡単に管理画面と認証機能を作る
Akishige TAKEKOSHI
 
CodeIgniter3マニュアル和訳の方法と感想
Akishige TAKEKOSHI
 
AndroiderがFirefoxOSアプリの多言化をしてみたら
Takaumi Kimura
 
設計書からの卒業
Fumiyasu Sumiya
 
Androidオススメライブラリ紹介
阪田 祐宇
 
関西FXOS勉強会3rdGIG キーボード大好き!
雅彦 金井
 
超効率的フロントエンドデバッグ術
Shinji Hashimoto
 
リーダブルコード勉強会 in 筑波大のまとめ
Kouhei Sutou
 
オープンセミナー香川2012 LT
Kouta Imanaka
 
ChromeとAndroidの 過去・現在・未来 ver 0.1
Shinobu Okano
 
Google Codelabsをやってみた
furusin
 
20160910 可視性指定子と設計の話
Ryo Ohki
 
Ad

Similar to Android Framework Code Readingのしおり ver 1.2 (20)

PDF
はじめる前に知っておきたいAndroidアプリ開発のポイント
Shinobu Okano
 
PDF
Blenderソースコードリーディング
Tetsuo Mitsuda
 
PDF
論理思考とプログラミング 2013f#10
Noritada Shimizu
 
PDF
できる!スマホアプリ:Webからはじまるアプリ for CMU16
Masami Yabushita
 
PDF
Introduction of Rhodes
Hitoshi Kuroyanagi
 
PDF
できる!スマホアプリ:Webからはじまるアプリ
Masami Yabushita
 
PDF
AndroidでActiveRecordライクにDBを使う
Fujimura Munehiko
 
PDF
CodingTips+ 基礎編
Yusuke Ito
 
PDF
7/7 WordBench kobe dreamweaver seminar
Atushi Sugiyama
 
PDF
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
Kazumi OHIRA
 
PDF
Firefoxの開発ツール
Noritada Shimizu
 
PDF
[20130624]最近の開発環境について話してみる sakata
VOYAGE GROUP
 
PPTX
XMLpro 1回目 環境導入
XMLProJ2014
 
PDF
失敗から学ぶAndroid設計話
chigichan24
 
PPTX
Firefox OSアーキテクチャクイックツアー
Masami Yabushita
 
PDF
Android Dev Tools Knowledge
Shinobu Okano
 
PDF
4時間まったりWordPressテーマ作成講座
Shinichi Nishikawa
 
PDF
OSSで楽に作るGo言語クライアントツール
Tano Makoto
 
PDF
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Kazumi OHIRA
 
PDF
コード嫌いのためのDreamweaver デザインビューの極意
Mori Kazue
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
Shinobu Okano
 
Blenderソースコードリーディング
Tetsuo Mitsuda
 
論理思考とプログラミング 2013f#10
Noritada Shimizu
 
できる!スマホアプリ:Webからはじまるアプリ for CMU16
Masami Yabushita
 
Introduction of Rhodes
Hitoshi Kuroyanagi
 
できる!スマホアプリ:Webからはじまるアプリ
Masami Yabushita
 
AndroidでActiveRecordライクにDBを使う
Fujimura Munehiko
 
CodingTips+ 基礎編
Yusuke Ito
 
7/7 WordBench kobe dreamweaver seminar
Atushi Sugiyama
 
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
Kazumi OHIRA
 
Firefoxの開発ツール
Noritada Shimizu
 
[20130624]最近の開発環境について話してみる sakata
VOYAGE GROUP
 
XMLpro 1回目 環境導入
XMLProJ2014
 
失敗から学ぶAndroid設計話
chigichan24
 
Firefox OSアーキテクチャクイックツアー
Masami Yabushita
 
Android Dev Tools Knowledge
Shinobu Okano
 
4時間まったりWordPressテーマ作成講座
Shinichi Nishikawa
 
OSSで楽に作るGo言語クライアントツール
Tano Makoto
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Kazumi OHIRA
 
コード嫌いのためのDreamweaver デザインビューの極意
Mori Kazue
 
Ad

More from Shinobu Okano (20)

PDF
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
Shinobu Okano
 
PDF
Kotlinでマッチョする話
Shinobu Okano
 
PDF
Lightweight-Stream-APIのあるAndroidアプリ開発
Shinobu Okano
 
PDF
shinobu.apk #3
Shinobu Okano
 
PDF
Android + JSON-RPC
Shinobu Okano
 
PDF
Gradle PluginとCIと俺
Shinobu Okano
 
PDF
shinobu.apk #2
Shinobu Okano
 
PDF
Kotlinにお触り
Shinobu Okano
 
PDF
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
Shinobu Okano
 
PDF
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Shinobu Okano
 
PDF
ChromeとAndroidの過去・現在・未来
Shinobu Okano
 
PDF
shinobu.apk #1
Shinobu Okano
 
PDF
Logcatの話
Shinobu Okano
 
PDF
GarumとMeteoriteと私 3nd Edition ver0.04
Shinobu Okano
 
PDF
隕石という名のスクリーンショットをSlackに落下させる話
Shinobu Okano
 
PDF
Upload a screenshot to Slack
Shinobu Okano
 
PDF
JobScheduler Code Reading
Shinobu Okano
 
PDF
『メルカリ』のアップデート監視 を支える(かもしれない)技術
Shinobu Okano
 
PDF
Screenshots Test spoon + espresso
Shinobu Okano
 
PDF
App Permissions
Shinobu Okano
 
OnActivityResult - おまえら!もうonActivityResultでswitchとif書く時代は終わりだぞ!
Shinobu Okano
 
Kotlinでマッチョする話
Shinobu Okano
 
Lightweight-Stream-APIのあるAndroidアプリ開発
Shinobu Okano
 
shinobu.apk #3
Shinobu Okano
 
Android + JSON-RPC
Shinobu Okano
 
Gradle PluginとCIと俺
Shinobu Okano
 
shinobu.apk #2
Shinobu Okano
 
Kotlinにお触り
Shinobu Okano
 
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
Shinobu Okano
 
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Shinobu Okano
 
ChromeとAndroidの過去・現在・未来
Shinobu Okano
 
shinobu.apk #1
Shinobu Okano
 
Logcatの話
Shinobu Okano
 
GarumとMeteoriteと私 3nd Edition ver0.04
Shinobu Okano
 
隕石という名のスクリーンショットをSlackに落下させる話
Shinobu Okano
 
Upload a screenshot to Slack
Shinobu Okano
 
JobScheduler Code Reading
Shinobu Okano
 
『メルカリ』のアップデート監視 を支える(かもしれない)技術
Shinobu Okano
 
Screenshots Test spoon + espresso
Shinobu Okano
 
App Permissions
Shinobu Okano
 

Recently uploaded (10)

PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 

Android Framework Code Readingのしおり ver 1.2