2010年8月27日金曜日

Androidのソースの構成を軽くおさらいしてみる

珍しく割とこまめに投稿している隠者でございます。
いやまぁ、今週末のネタ作りのために色々考えなくてはならないわけで・・・・。考えたネタをさらにkeynoteにまとめなければなので、時間も、ネタも足りない気がしてならないですが。
しかも、話す内容まで考えないと・・・うわぁぁん。てな状況です。はい、まだ資料になってません。

さて、今回のおはなしの肝は、最初のAndroidネタの日記の絵が3枚でほぼ全てなんですが、それだけだと持ち時間30分程度なんて時間はつぶせません。いや、話すのは最後なので、もしかしたら時間が押していて、軽く終わるという可能性もあるのですけど。

# 誰ですか?みんなあまり話すことがなくて、時間が大きく余ってるかもよとかいう人は!

ともかく、とりあえずPF部的アーキテクチャ図について軽くお話した後、ソースの構成まで立ち入って軽く見て、最後に、ソースを追いかける時に便利な、envsetup.shのお話をして、後は、アーキテクチャ図にいちゃもんをつけていただいて、議論がいい感じになったあたりで、ちゃんちゃんと行きたいなと思ってまして。そういう意味では、ちょっと日記が前後してしまいますが、まぁ、今日はソースの構成を軽くおさらいです。

というわけで、Android 2.2のソースコードでトップディレクトリを見てみましょう。
ソースコードは大きく分けると、Androidのシステムを構成するソース・ファイル群と開発環境を構成するファイル群とに分けられます。

* Androidのコード群
種別 ディレクトリ概要
Applicationspackagesアプリケーション
Application FrameworkframeworkAndroid Framework
Android RuntimedalvikDalvik VM
Library externalサードパーティ製ライブラリ(正確には、qemuのようなSDK用のプログラムや、pingのようなインストールするコマンドも含まれる)
HAL hardwareハードウェア抽象化レイヤのコード
System systembluetooth tools, システムファイル, wlan等システムに必要なファイル類
Bionicbioniclibcおよびローダ等、基本となるライブラリ・プログラムのコード

* 開発環境コード
種別ディレクトリ概要
Build関連buildビルド用のMakefile,シェルスクリプト等
prebuiltバイナリ提供のツール類(クロスコンパイラ等)
deviceデバイス固有のMakeファイル、スクリプト関連
SDK関連sdkSoftware Development Kit code
NDK関連ndkNative Development Kit code
ツール関連developmentPlatform engineering tools
テスト関連ctsAndroid CTS (Compatibility Test Suite)
Bootloader関連bootableブートローダリファレンスコード

ポーティングを意識してコードを読んでいくとすると、目を通しておくべき箇所を敢えて選ぶとすると。
  • hardware
    ハードウェアを有効に利用できるようにするのに実装が必要
  • system
    デバイスファイルを作っているinit等、いくつかのプログラムに手を入れる必要があるかも。init.rcのオリジナルも置いてあるので個々は意外とよく探索することになります。
  • device
    デバイスに合わせたビルド環境の構築のために必要
  • framework
    トラブルが起きた時に、logcatの内容からコードを追いかけて行くのによく読む場所

といった所でしょうか。もう少し詳しく踏み込みたい所ですが、まぁ、アーキテクチャの概要という趣旨から外れるので、PF部での発表ではここまででしょうかねぇ。というわけで、今日、明日は、資料作りに専念するため、更新はなしかと思いますので、あしからず。

0 件のコメント:

コメントを投稿