2010年8月23日月曜日

Androidのバージョン

なんというかあっという間に一週間だった隠者でございます。
いやぁ、私事でもろもろございまして、早速三日坊主みたいな状況に。

まぁ、でも、実際、発表は来週という状況で、そろそろ色々話の流れを考えなくてはならない状況で、意外と切羽詰ってまいりました。

さて、Androidには、実は大きな弱点がありまして。それは進化が速すぎた事。

日本Androidの会でAndroid関連の書籍の著者の方々も書いてる間にバージョンが上がってしまってというような苦労話をされていました。最近でこそかなり落ち着いている感がありますが、以前は、バージョンの変更に伴いAPIも結構変わったりして、アプリ開発の書籍を買ってきてそのとおりに打ち込んだのに動かないなんて話もよく耳にしたものです。

プラットフォームの移植を考えるときでも、やはりバージョンというのは悩みものです。でまぁ、話をする時には、どのバージョンの話なのか明確にできるように、きちんと把握しておきたいなと思ってます。

実は、バージョンについて、各特徴というのは、wikipediaに出てました。

プロジェクト名バージョン公開日Linux Kernel新機能
Cupcake 1.5 2009/04/40 2.6.27
  • Ability to record and watch videos through camcorder mode
  • Uploading videos to YouTube and pictures to Picasa directly from the phone
  • A new soft-keyboard with text-prediction
  • Bluetooth A2DP and AVRCP support
  • Ability to automatically connect to a Bluetooth headset within a certain distance
  • New widgets and folders that can populate the Home screens
  • Animated screen transitions
Donut 1.6 2009/09/15 2.6.29
  • An improved Android Market experience
  • An integrated camera, camcorder, and gallery interface
  • Gallery now enables users to select multiple photos for deletion
  • Updated Voice Search, with faster response and deeper integration with native applications, including the ability to dial contacts
  • Updated search experience to allow searching bookmarks, history, contacts, and the web from the home screen
  • Updated technology support for CDMA/EVDO, 802.1x, VPNs, and a text-to-speech engine
    Support for WVGA screen resolutions
  • Speed improvements in searching and camera applications
  • Gesture framework and GestureBuilder development tool
Eclair 2.0 2009/10/26
  • Optimized hardware speed
  • Support for more screen sizes and resolutions
  • Revamped UI
  • New Browser UI and HTML5 support
  • New contact lists
  • Better white-black ratio for backgrounds
  • Improved Google Maps 3.1.2
  • Microsoft Exchange support
  • Built in flash support for Camera
  • Digital Zoom
  • MotionEvent class enhanced to track multi-touch events
  • Improved virtual keyboard
  • Bluetooth 2.1
2.1 2010/01/12
  • Live Wallpapers
Froyo 2.2 2010/05/20 2.6.32
  • General Android OS speed, memory, and performance optimizations
  • Additional application speed improvements courtesy of JIT implementation
  • Integration of Chrome's V8 JavaScript engine into the Browser application
  • Increased Microsoft Exchange support (security policies, auto-discovery, GAL look-up, calendar synchronization, remote wipe)
  • Improved application launcher with shortcuts to Phone and Browser applications
    USB tethering and WiFi hotspot functionality
  • Added an option to disable data access over mobile network
  • Updated Market application with batch and automatic update features
  • Quick switching between multiple keyboard languages and their dictionaries
    Voice dialing and contact sharing over Bluetooth
  • Support for numeric and alphanumeric passwords
  • Support for file upload fields in the Browser application
  • Browser can now display animated GIFs (instead of just the first frame)
  • Support for installing applications to the expandable memory
  • Adobe Flash 10.1 support

長くなりましたが、wikipedia英語版から概ね抜粋させていただきました。ちょっとLinux Kernelについて別の列に分けたので若干見にくいかもしれませんが。
プロジェクト名という呼び方が公式にされているかどうかはわかりません。ただ、海外でのプロダクト開発の場合、あるリリースに向けた開発に「プロジェクト名」をつけるのが一般的なようです。そのプロジェクトの成果物としてブラッシュアップしたものが、リリース版になるわけです。
git上にも、プロジェクトを指すタグと、リリースした製品バージョンを示すタグがあることから、そういった一般的な流れに沿って開発が行われているんじゃないかと思います。

ちなみに、この表の発表年月日を見ると、1.5から2.0までの進化の速さは異様でしょう。丁度かなり盛り上がりを見せ始めたところでしたし、この頃はバージョンアップの速さに悲鳴がちらほら聞こえていたものです。

なお、今後については、ソースが見当たらないのでうる覚えな情報ですが、今後は、短気のスパンで出すのではなく、一定のスパンで出すようにしたいという方向にあったはずです。ですので、ここまで無茶な出方は今後しないはずです。

ところで、AndroidのバージョンとLinux Kernelのバージョンの更新は別段同期していません。Android用のLinux Kernelには、いくつかGoogleの独自追加した機能やドライバが必要になるのですが、これはLinux本家で行われているわけでもなく、アップストリームへの還元もいまいちうまくいっていないようです。

PF部として移植の対象として考える場合は、どうしても、Linuxのカーネルと、Androidのユーザーランドの2種類を念頭に入れる必要があります。

なお、面白い事に、Kernel依存の機能というのは、HALをのぞけばほとんどないようで、たとえば、EclairとLinux Kernel 2.6.27の組み合わせでも、基本的な機能の動作は可能です。おそらく、カメラ周りや、センサー周り等、HALを適切に実装していけば、異なるKernelでもそれなりの動きはするのでしょう。

ただし、最近のinit.rc等を読むと、Control Group等のカーネルのごく最近の機能なども積極的に使われていることから、真面目なポーティングを考えるのであれば、できるだけカーネルのバージョンも公式に発表されている製品に合わせてポーティングしたいものです。

0 件のコメント:

コメントを投稿