[[勉強会]]
[[ワーキンググループ/ハンズオンセッション]]

* アンドロイドとは [#m10dd242]

 アンドロイドとは、Googleが中心となって開発を行っている、携帯電話上でアプリケーションを開発するためのソフトウェアプラットフォームです。パソコンでいうところのWindowsやMac OSなどをイメージすると理解しやすいと思います。
 公式の開発ページは、Google Codeで管理されています。
- http://developer.android.com/intl/ja/index.html

** 特徴 [#z04c4f05]

アンドロイドとは、Googleが中心となって開発を行っている、携帯電話上でアプリケーションを開発するためのソフトウェアプラットフォームです。
以下のように、階層型のアーキテクチャを採用しています。
#ref(Intro.001.Architecture.png)

- OSとして、Linux Kernel 2.6を採用しています。
-- ただし、採用しているのはカーネルだけで、glibcではなく独自のlibcを採用するなど、通常のデスクトップLinuxとは大きく異なっています
- アプリケーション開発は、Java言語を採用していますが、独自のバーチャルマシンであるDalvik(ダルビック)を採用しています。
-- Javaの標準パッケージも一部しかサポートしていないため、Javaとは呼べません。
- WebKitやSQLiteなどのいくつかのネイティブライブラリーを搭載しています。
-- ライブラリの機能は、アプリケーションから利用できるようにJava言語のライブラリが提供されています。

** ライブラリ [#pe99fc76]

Javaから利用可能なライブラリとしては以下のようなものがあります。

|Javaライブラリ|概要|
|Android Core Package|android.os, android.app, android. graphicsなどコアとなるパッケージ|
|android.telephony|電話用API|
|android.webkit|ウェッブブラウザー用API|
|android.provider|電話帳、音楽、写真などのストレージ情報へのアクセスAPI|
|org.apache.http|ApacheのHTTPコンポーネント|
|org.json|軽量オブジェクトテキスト表現 (XMLよりも軽量)|
|org.xmlpull|XMLプルパーサー|
|Java SEサブセット|java.io,java.math, java.net, java.nio, java.security, java.sql, java.util, javax.crypto, javax.net.ssl, javax.security.auth, etc|

また、以下のようなネイティブライブラリが組み込まれています。

|ネイティブライブラリ|概要|
|System C library|組込みに最適化されたBSD ライセンスのC システムライブラリ(libc)|
|Media Libraries| PacketVideoのOpenCOREベースのイメージ、音声、ビデオのメディアライブラリ。MPEG4, H.264, MP3, AAC, AMR, JPG, PNGをサポート|
|Surface Manager|複数のアプリケーションから使用可能なディスプレイ管理|
|LibWebCore|ブラウザエンジン|
|SGL|2Dのグラフィックエンジン|
|3D libraries|OpenGL ES 1.0 APIベースの3Dエンジン。ハードウェア、ソフトウェアのレンダリングを含む |
|FreeType|ビットマップ、ベクターのフォントのレンダリング|
|SQLite| データベースエンジン|

** 開発環境 [#x06161f8]
QEMUを使用して実機と同じバイナリでEclipseを使用して開発可能
#ref(Intro.002.Environment.png)
|開発ツール|概要|
|Android Emulator|携帯電話をPC上で開発可能にするエミュレータ|
|Android Development Tools Plugin|Eclipse上でAndroidのアプリケーションをJava言語で開発するためのプラグイン|
|Android Debug Bridge |通称adb。コマンドラインからエミュレータやデバイスにアクセスするデバッグツール|
|Dalvik Debug Monitor Service|通称ddms。アンドロイド上のアプリケーションを実行するバーチャルマシン用のデバッグツール|

----

#ref(Android開発の概要.pdf)