2007年11月14日
Android Review
- Android - An Open Handset Alliance Project
- Google's Android OS early look SDK now available
- グーグルが広げる携帯電話の可能性--Andoroidファーストルック
HelloWorldを書くのは既にんぱか大先生にやられてしまったので、もうちょっと先を追ってみよう。iアプリからプログラミングを始めた人間としてクラス一覧を眺めていて気になったのは次のような機能。
- バックグラウンドプロセス (Service, Intent, Intent Receiver)
- Android IDLを使ったInterProcessCommunicationの仕組み
- データベース (SQLiteDatabase)
- アプリケーション管理 (PackageManager)
- Socket (DatagramSocket, ServerSocket, Socket)
そのほか、iアプリに有る機能は大体揃っているという印象。UIは2D Graphicsでなんとでもなる。権限周りはかなり気を付けてAPIが策定されている気がする。
バックグラウンドプロセスが作れるのは大きい。GmailをポーリングしてAIDLでフォアグラウンドプロセスにnotificationさせれば、もうそれだけで僕は使う。後はDatagramSocket使えるとネットワークゲームも作りやすくなるかもしれませんね。今まで手動でやらせていたソフトウェアの自動更新もPackageManagerを使うことによって自動的に行えるかも?なかなか素晴らしい。
というわけでソース見てみる。まずはemulator。
pficore% ls README build-emulator.sh qemu sdl pficore% find . -type f | xargs grep Google ./qemu/android_skin.h:/* Copyright (C) 2007 Google, Inc. ./qemu/hw/platform_interrupt.c:** Copyright 2007, Google Inc. ./qemu/hw/platform_fb.c:** Copyright 2007, Google Inc. ./qemu/hw/platform_timer.c:** Copyright 2007, Google Inc. ./qemu/hw/events_device.c: * Copyright 2006, Google Inc. ./qemu/hw/platform_device.c:** Copyright 2007, Google Inc. ./qemu/hw/platform_switch.c:** Copyright 2007, Google Inc. ./qemu/hw/android_arm.c:** Copyright 2007, Google Inc. ./qemu/hw/platform_tty.c:** Copyright 2007, Google Inc. ./qemu/hw/platform_device.h:** Copyright 2007, Google Inc. ./qemu/hw/platform_mmc.c:** Copyright 2007, Google Inc. ./qemu/hw/platform_audio.c:** Copyright 2007, Google Inc. ./qemu/android_userdata_img.h:/* Copyright (C) 2007 Google, Inc. ./qemu/android_icons.h:/* Copyright (C) 2007 Google, Inc. ./qemu/varint.h:// Copyright 2006 Google Inc. All Rights Reserved. ./qemu/dcache.h:// Copyright 2006 Google Inc. All Rights Reserved. ./qemu/android_sdl.c:/* Copyright (C) 2006-2007 Google, Inc. ./qemu/trace_common.h:/* Copyright (C) 2006-2007 Google, Inc. ./qemu/android.h:/* Copyright (C) 2007 Google, Inc. ./qemu/dcache.c:// Copyright 2006 Google Inc. All Rights Reserved. ./qemu/trace.c:/* Copyright (C) 2006-2007 Google, Inc. ./qemu/varint.c:// Copyright 2006 Google Inc. All Rights Reserved. ./qemu/trace.h:/* Copyright (C) 2006-2007 Google, Inc.
qemuだ。qemuにhw依存のコードだけ追加して、後は実環境のバイナリを食わせればエミュレーターになる訳ですね。コード的には追加は約1万行。今のReference ImplementationはQualcomm MSM7200 (ARM)で動いているらしいので、クロスコンパイルしてバイナリ作ったらエミュレーターで動くはず。調べてみたら既にやってる人がいた。
アプリケーションが走る肝心のDalvik VMのソースは?と探したが中の人によると「Unfortunately source code is not yet available, so you won't be able to dig into Dalvik just yet. 」らしい。
ただohadev.comに少しだけ情報が出ていて、どうやらApache Harmony Java VMに手を加えたものではあるらしい。まぁソースは公開予定らしいのでそれを待ちましょう。しかしGoogleはqemuやHarmonyをもっとアピールして上げても良いのになーと思う。そのほかユーザーランド周りは先ほどのクロスコンパイラーの人が調べている。
最後はカーネル。gitリポジトリが公開されている。"2007-10-09 Linus Torvalds"と書いてある以降のcommitがandroid用の変更にあたる。昔から携帯向けの最底辺のコードを見てみたかったので結構有り難い。開発してる方々の名前でググらせて頂くとと2人ともBeOSを開発されていた方らしい。
適当にdiff見てみただけだけど、MSM 7200向けにLinuxをポーティングしたのと後は各種デバイス向けのドライバ。あとRPCを共有メモリ上で実現したり。後は僕はあんまりデバドラ書いた経験が無いのでTTYとかSerialPortの部分とか普通に面白かった。
早く日本でも実機が出るといいですね。こういうのは実機が無いと全然開発する気が起きない。あとエミュレーターと実機では挙動が違うというのはよくある話。しかし出るんですか?
- by
- at 05:55

comments