ライブラリ

 では,次にカーネル層の上に位置するライブラリ群を見てみよう。

 Androidは,CまたはC++で開発されたライブラリを標準で含んでいる。これらのライブラリの機能は,アプリケーションの開発過程で使うが,直接操作することはなく,一般的には後述する各アプリケーションのフレームワークを経由して利用する。

 以下に,代表的なライブラリについて示す。

●SurfaceManager

 「SurfaceManager」は,グラフィックス・レイヤを合成して一つの画面に表示する仕組みをアプリケーションに提供する描画ライブラリだ。グラフィック・レイヤを使うと,アプリケーションを経由しないで画面表示が可能なため,高速に描画できる。アプリケーションからは主に,カメラやGPU(GraphicsProcessingUnit)といったハードウエアからのデータを,高速に描画するために利用する。

●MediaFramework

 画像の表示や音声・動画のエンコードとデコードの処理を実行するライブラリ。米PacketVideo社のメディア再生用ライブラリ「OpenCORE」をベースに開発されている。対応するフォーマットには,音声では「mp3」や「aac」など,動画では「h.263」や「h.264」などがある。

●SQLite

 高速なリレーショナル・データベース・エンジン。データ管理の機能を提供する。格納する電話番号を比較するなど,Android用に文字列を処理する機能が追加されている。

 アプリケーションからは,フレームワークを介してリレーショナル・データベースとして利用する。フレームワークにある「ContentProvider」(次回以降で解説)のような,アプリケーション間のデータ共有の仕組みの中でも利用されている。

●OpenGLES

 ハードウエア・アクセラレータを使った高速な3D描画を実現する3Dグラフィックス・ライブラリ。OpenGLES1.0*に準拠している。

【OpenGLES】組み込み機器向けのグラフィックAPIを策定する業界団体「KhronosGroup」が公開している仕様。

●WebKit

 HTMLまたはXHTMLの描画を担当するライブラリ。内部に,高速なJavaScriptエンジンである「SquirrelFish」が搭載されている。開発者がアプリケーションの画面にWebページを表示する場合に利用する画面部品(ウィジェット)である「WebView」にも機能を提供している。

●libc(bionic)

 Android用のCライブラリ。BSDのCライブラリを基に開発されており,x86とARMに対応している。標準規格に沿ったlibcと比べ,ロケール(各国語対応)やマルチバイト文字に対応していない,C++の例外に対応していないなど,最低限の実装のみサポートしている。携帯端末上での動作を最適化するために,「機能を限定してライブラリが肥大化してしまうことを防止する」という方針で開発されている。