Android SDK 0.9 リリース


GoogleからAndroid SDK Ver0.9がリリースされた。

Announcing a beta release of the Android SDK
http://code.google.com/android/

Android SDK 0.9のリリースは初の1.0に向けたリリースである。
APIは今回また大きく変更されたが、今後は大きな変更はないとの宣言がなされた。
ただし今回のリリースもあえてβ版とし、1.0のSDKで動く保証はしないとも記述されている。


前回のリリースから5ヶ月が経ち、あまりの更新の無さに早期のリリースを求める署名運動まで行われた。
その5ヶ月間分の変更点は山のようにある。
まず一番大きな変更点はホーム画面が大きく更新されたことだ。
既にGoogle I/Oなどにて公開済みであるが、画面は左右にスクロールすることが可能になり大きさは3倍になった。
またmenuとは別にアプリのランチャーが付属した。
このためアプリはランチャーにインストールされ、好みのものだけ画面上に配置することも可能になった。


画面以外の変更では付属アプリの数が大きく増えた。
特に興味深いのは公式のMP3プレーヤだ。
SDカード上にMP3ファイルを入れておくと、公式アプリから再生ができる。
この時、mediascannerによりMP3のタグ情報が全て管理されているため、ユーザーは再生する対象のMP3をアーティスト、アルバムタイトル、曲名の好きなキーにて探すことができる。
さらに曲の再生画面ではタグ情報に加え、アルバムジャケットも表示される。
これらはiTunes等によりMP3のファイル自体に登録されていなければならない。
ユーザーは好きな曲をリングトーン(着うた)に登録することができる。


またMP3プレーヤだけでなく、ピクチャービューアも付属する。
こちらもまたExtタグが管理されているし、自由に壁紙に設定できる。


両者に共通してpurchasedの項目がある。
これは噂のT-mobileapp storeにて音楽ファイルや、壁紙の販売を行うのだろう。

開発上の変更


開発者にとって一番大きな変更はapkファイルに必ずデジタル署名がいるようになった。
これは開発者の負担にならないように、Eclipseでの開発中には自動的に署名がなされるようになっている。
またセルフサインドのキーでよく、証明書を購入する必要もない。


次にMapViewの利用にAPIキーの取得が必要になった。
これは今回リリースされたβ版ではダミーのキーになっており、どんなキーを利用しても良い。
しかし1.0リリース時には取得する必要がある。
MapViewを用いるアプリを利用する場合に誰がキーを取得しなければならないのかが謎である。
最悪の場合には全てのユーザーに独自でAPIキーの取得をしてもらわなければならないのかもしれないし、プログラマだけが取得するだけでよいのかもしれない。


アプリにてネットワークを利用するのにmanifestにてパーミッションを設定する必要ができた。
これは大した手間ではない。


大きな変更で早速公式で話題になっているものにGTalkのAPIが廃止された。
これはセキュリティを考慮したとのことである。
またBlueTooth対応も元にしていたオープンソース実装に大きな動きがあり、1.0には間に合わないとのことで採用が見送られた。


API上の変更点はとても多い。
自分も全てのアプリが動かなくなった。


Overview of Changes, m5 to Android 0.9 SDK
http://code.google.com/android/migrating/m5-0.9/changes-overview.html


API Differences Report
http://code.google.com/android/migrating/m5-0.9/changes.html


主にAPIのデザイン上の見直しがなされたようである。
また名前の見直しが非常に多い。

例えばテトリスが動かなくなった点はShapeDrawableのsetColorがなくなった。
一旦getPaintを行い、Paintに対しsetColorを行う必要がある。
これは面倒で元のほうが良い気がする。


自作のMP3Playerにて利用していたTickerがなくなった。
変わりが見つからないのだが、TextSwitcherを使えということなのだろうか。
変更点の記述を見ても何をすれば元どおりにできるのかわからないことが少しばかりつらい。
しかし今までα版を使っていたと考えればこれも仕方のないことだ。


startSubActivityやIntentRecieverなどは名前変更の対象となった。


Notificationの変更が非常に大きい。
PendingIntentなるものが追加された。
これはセキュリティを配慮したとのことで、Serviceから実行されるAcitivityをより安全に限定する方向の修正であるとのことだ。
また今までサービスの説明を記述していたものが、実行中のコンテンツを表示するように促す引数名に変更されている。
巨大なコンストラクタが複数のメソッドに分割された。


公式Intent一覧が固まったとのことだが、今回ドキュメントが間に合わなかった模様。

公式サンプルアプリ

Lunar Landerのソースが大きく修正され、カスタムなViewからSurfaceViewへと変更された。
今までゲームの作り方にいろいろな方法が行われてきたが、公式がSurfaceViewへの変更をより良いパフォーマンスのためと記述したことにより、この方法が一般化されることと思われる。


API Demoは数が非常に増えた。
UI関係の拡張が多い。
またエミュレータにハードウェアアクセラレータが対応されたため、Kubeのデモがものすごく速くなっている。
DalvikVMに大きな変更はないと思われるのでロジックの実行速度に変化はないと思われるのだが、実機での稼動レポートが待ち遠しい。
ハードウェアアクセラレータの対応は2Dのblend処理にも好影響があったようで、ゲーム類が非常に動きが良くなった。
遅い遅いと言われ続けたエミュレータだが、ゲーム開発者からの反応が待ち遠しい。


そういえば今やってみて気付いたが、遅くて苦痛だったadb pushの速度が随分と改善されたようだ。
エミュレータの実行時間も非常に短縮されている。


サンプルに特筆すべきものとして、Homeアプリのサンプルが付いた。
これを用いると公式ホームを変更することが可能となる。
非常に興味深いので早く理解したい。