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 Tools、Bionic などの半自律型 Android プロジェクトがアップストリーム プロジェクトとして機能するように移行作業が続けられています。一般に、このようなプロジェクトはすべて公開ツリーで開発されます。アップストリーム プロジェクトによっては、デベロッパーによるコントリビューションを直接受け付けることがあります。詳細については、アップストリーム プロジェクトをご覧ください。いずれの場合も、スナップショットが定期的にリリースに取り込まれます。
  • リリース コードラインは、Git 内の複数のブランチで構成される場合もありますが、特定の Android プラットフォーム バージョンに対して、常に唯一の正規ソースコードと見なされます。OEM など、デバイスを開発するグループがソースコードを取り込む際は、リリース ブランチからに限るようにしてください。
  • 試験運用版のコードラインは、開発コミュニティから提示された変更要素を取り入れ、安定版に向けて開発を繰り返していくことを目的に用意されます。
  • 安定性が確認された変更要素は、最終的にリリース ブランチに取り込まれます。ただし、適用されるのは、バグ修正やアプリの改善など、プラットフォームの API に影響を与えない変更要素に限られます。
  • 必要に応じて、変更要素がアップストリーム プロジェクト(Android のアップストリーム プロジェクトも含む)からリリース ブランチに取り込まれます。
  • 現行バージョンの次のバージョン(フレームワークとプラットフォーム API の次期メジャー バージョン)の開発は、Google の内部で行われます。詳細については、非公開のコードラインをご覧ください。
  • 必要に応じて、変更要素がアップストリーム ブランチや、リリース ブランチ、試験運用ブランチから Google の非公開ブランチに取り込まれます。
  • 次期バージョンのプラットフォーム API が安定し、すべてのテストが完了すると、Google は次期プラットフォーム バージョン(新しい SdkVersion)のリリースを正式公開します。このリリースは、内部コードラインの公開リリース ブランチと、新しい現行プラットフォーム コードラインに該当します。
  • 新しいプラットフォーム バージョンが正式公開されると、それと同時に、対応する試験運用版コードラインが作成されます。

非公開のコードライン

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

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

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

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