[[勉強会]] [[ワーキンググループ/ハンズオンセッション]] * アンドロイドとは [#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)