Android のソフトウェア管理

Android オープンソース プロジェクト(AOSP)では、OEM やデバイス メーカーによって実装され、独自のハードウェア上に移植して実行することが可能なソフトウェア スタック全体を維持管理しています。Android の品質を維持するため、Google は、フルタイムのエンジニア、プロダクト マネージャー、ユーザー インターフェース デザイナー、品質保証テスターなど、最新のデバイスを市場に投入するうえで必要な人員を割り当ててきました。

また、多数のコードラインを管理して、Android の現在の安定版と、変更の可能性がある試験的なタスクを明確に区分しています。オープンソースの管理と Android コードラインの維持管理は、大規模なプロダクト開発サイクルの一環として行われています。

AOSP でのコード管理

以下の表は、AOSP でのコード管理とリリースに関する概要を示しています。

コードライン図
図 1.AOSP のコードとリリース
  1. Android プラットフォームには、どの時点でも常に最新のリリースが存在しており、通常は、ツリー内のブランチの形式をとっています。
  2. デバイスのビルドやコントリビューションを行う場合、現在の最新リリースで作業を行います。バグの修正、新しいデバイスの立ち上げ、新機能の試験運用などもこのリリースで行います。
  3. 同時に Google では、製品のニーズや目標に合わせて Android プラットフォームとフレームワークの次期バージョンを開発しています。次期バージョンの開発にあたっては、デバイス パートナーと協力し、Android の今後の方向性をふまえたうえで、その仕様を選定するフラグシップ デバイスに取り組みます。
  4. 現行バージョンの次のバージョンの準備が完了すると、公開ソースツリーに公開されて、最新のリリースとなります。

規約と注意事項

  • リリースは、1.5 や 8.1 などの Android プラットフォームの正式バージョンに対応しています。プラットフォームのリリースは、AndroidManifest.xml ファイルにある SdkVersion フィールドのバージョンに対応しており、ソースツリーの frameworks/base/api 内で定義されます。
  • アップストリーム プロジェクトは、Android スタックがコードを取り込む元となるオープンソースのプロジェクトです。Linux カーネルや WebKit などのプロジェクトに加え、ART、Android SDK ツール、Bionic などの半自律型 Android プロジェクトの一部がアップストリーム プロジェクトとして機能するように移行作業が続けられています。一般に、これらのプロジェクトはすべて公開ツリーで開発され、アップストリーム プロジェクトの一部が、デベロッパーによるコントリビューションを直接受け付けます。詳細については、アップストリーム プロジェクトをご覧ください。いずれの場合も、スナップショットが定期的にリリースに取り込まれます。
  • リリース コードラインは、Git 内の複数のブランチで構成される場合もありますが、特定の Android プラットフォームのバージョンに対して、常に唯一の正規ソースコードとみなされます。デバイスを作成する OEM やその他のグループがソースコードを取り込む際は、リリース ブランチからのみとする必要があります。
  • 試験運用版のコードラインは、開発コミュニティ内での変更内容を網羅し、安定性をふまえたうえで開発を繰り返していくことを目的に用意されます。
  • 安定性の確認された変更は、最終的にリリース ブランチに取り込まれ、バグ修正、アプリケーションの改善など、プラットフォームの API に影響を与えない変更に対してのみ適用されます。
  • 必要に応じて、変更内容がアップストリーム プロジェクト(Android のアップストリーム プロジェクトも含む)からリリー スブランチに取り込まれます。
  • 現行バージョンの次のバージョン(フレームワークとプラットフォーム API の次期メジャー バージョン)の開発は、Google の内部で行われます。詳細については、非公開のコードラインをご覧ください。
  • 必要に応じて、変更内容がアップストリーム ブランチ、リリース ブランチ、試験運用ブランチから Google の非公開ブランチに取り込まれます。
  • 次期バージョンのプラットフォーム API が安定し、すべてのテストが終了すると、Google は次期プラットフォーム バージョン(新しい SdkVersion)のリリースを公開します。このリリースは、内部コードラインの公開リリース ブランチと、新しい現行プラットフォーム コードラインに該当します。
  • 新しいプラットフォーム バージョンが公開されると、対応する試験運用版のコードラインが同時に作成されます。

非公開のコードライン

上記のソースコード管理方針の対象には、Google が Android の現行公開バージョンに注力するために非公開としているコードラインも含まれています。

OEM やその他のデバイス メーカーは、デバイスをリリースする際、通常は最新バージョンの Android の搭載を希望します。同様に、アプリケーションのデベロッパーは、必要以上に多くのプラットフォーム バージョンに対応することを望みません。一方、Google は、プラットフォームとしての Android とプロダクトとしての Android の両方について、戦略的な方向性を示す役割を担っています。そこで、Google は、Android 関連の知的財産を保護しつつ、数点のフラグシップ デバイスに注力して各機能の開発を進めるというアプローチを採用しました。

その結果、Google はサードパーティの機密情報を多く抱えることになり、適切な保護が行えるようになるまでは、機密性の高い機能の公開を控える必要が生じます。また、同時期に扱うプラットフォームのバージョンが多すぎても、プラットフォームに大きなリスクが生じます。こうした理由から、現在公開されている Android の安定バージョンに注力できるよう、サードパーティによるコントリビューションも含めたオープンソース プロジェクトを構築しました。次期バージョンのプラットフォームにおける中核部分の開発は、公式リリースの準備が整うまでは非公開で行われます。

Google では、このようなアプローチに賛同していないコントリビューターがいることを認識しており、そうした視点を尊重もしています。しかしながら、このアプローチが最善であると考え、Android の実装方法として採用している次第です。