Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AOSP読んでみた ~Androidの仕組み~

274 views

Published on

高専カンファレンス in 讃岐(2019/05/01開催)で話したLT「AOSP読んでみた」のパワーポイントデータです。

Published in: Education
  • Be the first to comment

  • Be the first to like this

AOSP読んでみた ~Androidの仕組み~

  1. 1. AOSP読んでみた Androidの仕組み しがない受付係 Kaniyama_t2019/5/1 高専カンファレンス in 讃岐 1 ご注意 このスライド・発表の内容は間違っている可能性があります. 不備にお気付きの際は、webmaster@kaniyama.netへ御連絡ください
  2. 2. 2 Kaniyama_t 進捗が生めない高専生 @Kaniyama_404 @Kaniyama-t kaniyama.net 2019/5/1 事故哨戒 GWにラズパイで工作しようとした(`TωT´)ゞ 高専カンファレンス in 讃岐
  3. 3. 3 Kaniyama_t 進捗が生めない高専生 @Kaniyama_404 @Kaniyama-t kaniyama.net 2019/5/1 事故哨戒 なんかめっちゃRTされて嬉しい(`・ω・´)ゞ 高専カンファレンス in 讃岐
  4. 4. 4 Kaniyama_t 進捗が生めない高専生 @Kaniyama_404 @Kaniyama-t kaniyama.net 2019/5/1 事故哨戒 最近ブログサイトをGCEに移設しました(`・ω・´)ゞ 高専カンファレンス in 讃岐 URL:https://kaniyama.net/
  5. 5. 5 2019/5/1 A O S P とは 高専カンファレンス in 讃岐 Android Open Source Project とは スマホ上の ソフトウェア
  6. 6. Androidとは 高専カンファレンス in 讃岐 6AOSPとは スマホやタブレット(Android端末)のOS GPS 画面 オーディオ端子 カメラ スマホのセンサ application 規格ごとの差 が大きく、 アプリ開発が 困難 Android 画面表示関数 GPS取得関数 カメラ取得関数 画面表示 GPSを取得 カメラ取得 ハードとソフトのクッションを作る
  7. 7. Android Open Source Projectとは 高専カンファレンス in 讃岐 7AOSPとは GPS 画面 オーディオ端子 カメラ スマホのセンサ application 規格ごとの差 が大きく、 アプリ開発が 困難 Android 画面表示関数 GPS取得関数 カメラ取得関数 画面表示 GPSを取得 カメラ取得 ・Androidに関係するソフトウェア全て
  8. 8. Android Open Source Projectとは 高専カンファレンス in 讃岐 8AOSPとは GPS 画面 オーディオ端子 カメラ スマホのセンサ application 規格ごとの差 が大きく、 アプリ開発が 困難 Android 画面表示関数 GPS取得関数 カメラ取得関数 画面表示 GPSを取得 カメラ取得 OSやスマホ本体のハードの特性を学べる おもしろそう d(^ω°) (小並感)
  9. 9. 9 2019/5/1 高専カンファレンス in 讃岐 AOSPを覗いてみる Androidのカーネルコードを読んでみる Androidをビルドしてみる 本題
  10. 10. 10 2019/5/1 AOSPを覗いてみる 高専カンファレンス in 讃岐
  11. 11. 高専カンファレンス in 讃岐 11AOSPを覗いてみる URL: https://source.android.com/ AOSPの公式サイト(英語)を覗いてみる
  12. 12. スマホの構造 高専カンファレンス in 讃岐 12AOSPを覗いてみる Linux Kernel HAL Native Library Android Runtime Android Framework Application Device (Physical) Android Framework Native Library・Android Runtime Linux Kernel・HAL
  13. 13. スマホの構造 高専カンファレンス in 讃岐 13AOSPを覗いてみる Linux Kernel HAL Native Library Android Runtime Android Framework Application Linux Kernel・HAT Device (Physical) GPS 画面 オーディオ端子 カメラ スマホのセンサ 規格ごとの差 が大きく、 アプリ開発が 困難 Android 画面表示関数 GPS取得関数 カメラ取得関数 各ベンダーの提供する ハードウェアを、 統一した窓口にする システム 演算やメモリ制御 などの概念
  14. 14. スマホの構造 高専カンファレンス in 讃岐 14AOSPを覗いてみる Linux Kernel HAL Native Library Android Runtime Android Framework Application Native Library Device (Physical) 描画システム SQLITE・SSL C言語 標準ライブラリ OpenGL,FreeType(フォント描画), WebKit (HTML描画) OpenGL,FreeType(フォント描画), WebKit (HTML描画) libc
  15. 15. スマホの構造 高専カンファレンス in 讃岐 15AOSPを覗いてみる Linux Kernel HAL Native Library Android Runtime Android Framework Application Android Runtime Device (Physical) 仮想マシン Dalvik VM 各言語の標準ライブラリ Java, Kotlin 等... 画像引用元:Androidの仕組み を知る (https://tech.nikkeibp.co.jp/it/ article/COLUMN/20091208/34 1738/)
  16. 16. スマホの構造 高専カンファレンス in 讃岐 16AOSPを覗いてみる Linux Kernel HAL Native Library Android Runtime Android Framework Application Android Framework Device (Physical) APIの提供 View, Activity/Fragment 各種Manager etc... Listener処理 OnClickListenerとかListener全般, Observer等 applicationAndroid 画面表示関数 GPS取得関数 カメラ取得関数 画面表示 GPSを取得 カメラ取得
  17. 17. スマホの構造 高専カンファレンス in 讃岐 17AOSPを覗いてみる Linux Kernel HAL Native Library Android Runtime Android Framework Application Device (Physical) フレームワーク 実行環境 Linux カーネル
  18. 18. 18 2019/5/1 Androidのカーネル コードを読んでみる 高専カンファレンス in 讃岐
  19. 19. 高専カンファレンス in 讃岐 19Androidのカーネルコードを読んでみる さっそくカーネルコードを読むぞ !? AOSP公式HPからはソースコードを 読めない...
  20. 20. コードを読む方法 高専カンファレンス in 讃岐 20Androidのカーネルコードを読んでみる 提供元 備考 本家 ソースのダウンロードはDeveloperサイトへ Github 本家のミラーサイト OESF OpenGrokなのでソースコードの検索に便利 GrepCode ソースコードの検索に使えます。ここはframeworksだけのようです。 Linaro Frameworkは本家と同じかと思うけど純正ではないはず Android SDK Search Chromeエクステンションですが、AndroidDeveloperサイトからのクラスの ソースコード参照 (本家) が容易になります。 引用元:Androidのオープンソース(AOSP)を見る | Qiita (https://qiita.com/okey01/items/89e575fc8e8ebab0e2bc)
  21. 21. コードを読む方法 高専カンファレンス in 讃岐 21Androidのカーネルコードを読んでみる 公式のツール “repo”を使う方法 公式のGithubレポジトリ を使用する方法 非公式のツールを 使用する方法 1.curl https://storage.googlea(略) > ~/bin/repo 2.repo init -u https://android.googlesource.(略) 3.repo sync 1.そのまんまGitHubに載ってます 2.gitコマンドで落とします Webサイトからソースコードを検索することも可能で す^^ OFFICIAL EASY USEFULL Easybuild Difficultprepare Difficultbuild Easyprepare -build Difficultprepare ビルドする為 この方法を 選択する
  22. 22. 注意 初期同期操作が完了するまでに1時間以上かかります 高専カンファレンス in 讃岐 23Androidのカーネルコードを読んでみる みんなは十分に時間と容量を用意して作業しましょう! Androidいと凄し … Conoha VPS 1GBプラン > 使用容量 21.11GB > 同期時間 30 min.(作業時間込み)
  23. 23. Let’s Reed it! 高専カンファレンス in 讃岐 24Androidのカーネルコードを読んでみる / /bluetooth/bluedroid/Bluetooth.c 1 0
  24. 24. 個人的に着目したところ 高専カンファレンス in 讃岐 25 Frameworkはjava で CI環境作りたい…d(=°ω°=) 全てが疎結合化されてます! ブートローダー,ハード面はCで
  25. 25. 26 2019/5/1 Androidをビルドする 高専カンファレンス in 讃岐
  26. 26. どうやってビルドするのか? 高専カンファレンス in 讃岐 27Androidのカーネルコードを読んでみる $ make How_to_build_android_OS こ れ だ け
  27. 27. えっ...私のビルド...楽すぎ... 高専カンファレンス in 讃岐 28 オープンとはこういうことだ: mkdir android ; cd android ; repo init -u git://android.git(略)manifest.git ; repo sync ; make ※一部改変して意訳しています
  28. 28. ただし,依存環境に癖あり 高専カンファレンス in 讃岐 29 必要要件 ・gnu-makeが3.8.1であること (3.8.2以降後方互換性が消えた為) ・jdk1.6.0が導入済みであること (1.7以上は不可) ・masterブランチはビルドできない ・repo init時にバージョン指定を行わ ないとビルドできない
  29. 29. 30 2019/5/1 結論 まだびるどできてない 高専カンファレンス in 讃岐
  30. 30. 31 2019/5/1 結論 たのしかったー! 高専カンファレンス in 讃岐

×