[読みもの][android]階層について勉強

階層構造
Androidとはプラットフォーム全体を指す名であり、下はOSから上はアプリケーションまで、様々なものを含む。
Androidの階層構造(上位→下位)は次の通り。
アプリケーション
フレームワーク
Java層
↑これより上はJava
↓これより下はC/C++/アセンブリ言語
JNI層
ライブラリ・ランタイム
SQLiteなど、さまざまなライブラリと、Dalvik仮想マシン
libcはこの層にあるが、Bionic libcという独自の実装で、Linuxで一般的なGNU libcとは異なる。
HAL(Hardware Abstraction Layer)
Linuxのデバイスドライバーなどを含め、ハードウェアを抽象化する層
Linuxカーネル
ドライバー、デーモンなどのシステム内部
ハードウェア
JNI層以下はネイティブコード(非仮想コード)で記載されており、Linuxと同様の構成である。マルチプロセッサー構成では、REX-OSなど他のプロセッサー用コードが含まれる。

ディレクトリ
AOSP/abi
AOSP/bionic - Bionic
AOSP/bootable - ブートローダリファレンスコード
AOSP/build - ビルドツール
AOSP/cts - テストスイート
AOSP/dalvik? - Dalvik VM
AOSP/development - 開発ツール、SDK、サンプルコード
AOSP/device
AOSP/docs?
AOSP/external
AOSP/frameworks - Android/Application Framework
AOSP/hardware - AOSP/hardware/ファイル一覧 - ハードウェア制御ライブラリ(センサ,GPS)、HAL
AOSP/libcore? - Java関連の主要なライブラリ
AOSP/ndk? - Android NDK
AOSP/packages - 標準インストールアプリのソース、壁紙とか
AOSP/prebuilt - ビルドに必要な各種バイナリファイル
AOSP/sdk? - Android SDK
AOSP/system - Androidに必要な実行ファイル、サービス、ライブラリなどのソース。adb、fastboot、init、無線LANのドライバなど
AOSP/system/ファイル一覧