Androidのなかみ
Inside Android
Tae Yeon Kim, Hyung Joo Song, Ji Hoon Park,
Bak Lee, Ki Young Lim著
Androidフレームワーク研究会 訳
定価 4,180円(本体 3,800円+税)
ISBN 978-4-89362-288-4
B5変型判 並製 506 頁
2013年12月20日 発売
Androidの内部構造を徹底解剖
ソースコードの分析を通してAndroidフレームワークの全貌に迫る。Androidの動作原理を理解することによって、高品質なアプリの開発を目指す方へ。
書籍版 定価 4,180円 |
- 概要
- 目次
アプリケーション開発者が、Androidフレームワークについて深く理解する必要はあるのだろうか?
Androidが提供する基本アプリケーション(Home、Camera、Dialer、Browser など)は、アプリケーションフレームワーク層の上で動作しています。 開発者は、Android SDKを使用して、アプリケーションフレームワークが提供するAPIを利用すれば、アプリケーションフレームワーク上で動作するAndroidアプリケーションを開発することができます。
すなわち、フレームワークを正しく理解することなく、Androidアプリケーションの開発は可能です。 しかし、フレームワークの構造の理解と動作原理の正しい把握は、Androidフレームワークに最適なソフトウェアの設計に役立ちます。
その一方で、Androidのプラットフォーム開発者は、Android フレームワークへの理解が必須でしょう。 Androidは、オープンソースで提供されているので、競合他社と差別化した製品をつくりだすためには、Androidフレームワークをカスタムマイズし、差別化した自社ソリューションを構築するためには、 Androidフレームワークについての正確で深い理解が必要となります。
本書で紹介するAndroidフレームワークは、Android内部の総括的な説明ではなく、フレームワーク内部の動作原理を理解することです。 そのため、Androidの膨大なソースコードのなかから、frameworks、packages、system フォルダに入っているソースコードについて分析していきます。
本書の記述内容は、(原著刊行時点のバージョンである)Android 2.2に基づいて作成されています。しかし、フレームワークの特性上、1.5から2.2に至るバージョンアップでの フレームワークに関連したソースコードには大きな変化はなく、バージョンに大きくこだわる必要はないといえるでしょう。本書の内容は、それ以降のバージョンでも引き続き利用できると考えています。
※本書日本語版には、原著オリジナル版に対して一部、Android 4.1.2(コードネームJelly Bean)対応の追加修正が加わっています。
- --------------------
- • Google、Googleロゴ、Androidは、Google Inc.の登録商標または商標です。
- • AndroidロボットはGoogle Inc.が著作権を保持しています。
- • Androidロボットはクリエイティブ・コモンズ表示(Creative Commons Attribution)3.0に基づきライセンスされています。
- 1 章 Android フレームワークの概要
- 1.1 Android ソースコードの構造
- 1.2 ブート処理からみる Android フレームワーク
- 2 章 Android 開発環境の構築
- 2.1 ホスト環境の構成
- 2.2 Android システムのビルド環境の構築
- 2.3 Nexus 7 に Android システムをインストールする
- 2.4 Android 開発環境の構築
- 2.5 Android アプリケーションの開発
- 2.6 アプリケーションのフレームワークのデバッグ
- 2.7 Android のログシステム
- 2.8 まとめ
- 3 章 init プロセス
- 3.1 init プロセスの実行過程
- 3.2 init プロセスのソースコード
- 3.3 init.rc ファイルと実行
- 3.4 プロパティサービス
- 3.5 プロセスの終了と再起動
- 3.6 デバイスノードファイルの生成
- 3.7 まとめ
- 4 章 JNI と NDK
- 4.1 Android と JNI
- 4.2 JNI の基本原理
- 4.3 JNI 関数の使い方
- 4.4 C プログラムから Java クラスの実行
- 4.5 JNI ネイティブ関数を直接登録する
- 4.6 Android NDK での開発
- 5 章 Zygote
- 5.1 Zygote とは何か?
- 5.2 app_process から ZygoteInit クラスを実行する
- 5.3 ZygoteInit クラスの機能
- 6 章 Android サービスの概要
- 6.1 例題プログラム : Android サービスの動作を理解する
- 6.2 Android サービスの分類
- 6.3 Android アプリケーションサービス
- 6.4 システムサービスの種類
- 6.5 システムサービスの生成
- 6.6 Android サービスフレームワークとバインダドライバの概要および用語
- 7 章 Android バインダ IPC
- 7.1 Linux のメモリ空間とバインダドライバ
- 7.2 Android バインダのモデル
- 7.3 Android バインダドライバの分析
- 7.4 コンテキストマネージャ
- 7.5 まとめ
- 8 章 Android サービスフレームワーク
- 8.1 サービスフレームワーク
- 8.2 サービスフレームワークの構造
- 8.3 動作メカニズム
- 8.4 ネイティブサービスマネージャ
- 8.5 ネイティブサービス作成
- 8.6 まとめ
- 9 章 ネイティブシステムサービスの分析
- 9.1 カメラサービス(Camera Service)
- 9.2 カメラアプリケーション
- 9.3 カメラサービスフレームワーク
- 9.4 カメラサービスのフレームワーク動作
- 9.5 まとめ
- 10 章 Java サービスフレームワーク
- 10.1 Java サービスフレームワーク
- 10.2 動作メカニズム
- 10.3 Java システムサービスの実装
- 10.4 Java サービスマネージャ
- 10.5 AIDL を利用したサービスのプロキシとスタブの実装
- 10.6 まとめ
- 11 章 Java システムサービスの動作
- 11.1 アクティビティマネージャサービス
- 11.2 アクティビティマネージャサービスを使ったサービス生成のコード分析
- 11.3 まとめ
- 付録 AIDL 言語の文法
- 著者あとがき
- 索引