フラグの使用と種類を決定する

機能リリースフラグは、コードブランチの安定性を確保するための手段として Google で使用されます。このフラグは、AOSP への特定のタイプのコントリビューションにも必要となります。機能リリースフラグを実装する前に、変更にフラグが必要かどうかを判断します。さらに、フラグが必要な場合は、使用するフラグの種類を決める必要があります。

フラグを使用するか判断する

機能リリースフラグを使用するかを判断するには、次のガイドラインを使用します。

  • 新機能の追加や特に複雑なバグの修正など、AOSP コードベースが不安定になる可能性のある変更を行う場合は、機能リリースフラグを使用します。

  • 逆に、コメントの変更など、コードベースが不安定になる可能性の低いコード変更を行う場合は、機能リリースフラグを使用する必要はありません。

フラグの種類を決める

フラグには、aconfig フラグとビルドフラグの 2 種類があります。

aconfig フラグ

aconfig フラグは、テストとリリースのプロセスで、未リリースのコードの実行とリリース済みコードの実行を分離するために使用されます。aconfig フラグは、読み取り / 書き込み、または読み取り専用にできます。

  • 読み取り / 書き込み aconfig フラグは、実行時に有効(true に設定)または無効(false に設定)にできるブール値変数です。読み取り / 書き込みフラグを使用すると、メインブランチの安定性を損ねることなく変更のテストとリリースができます。

  • 読み取り専用 aconfig フラグは、実行時に変更できないブール値定数です。コードが安定していて、リリースの準備が整っている場合は、読み取り / 書き込み aconfig フラグを読み取り専用 aconfig フラグに変換できます。

    また、使用しているコンパイラによっては、読み取り専用フラグが使用されている場合、実行されないコードがビルドから除外される場合があります。そこで、読み取り専用フラグを使用して、リリースに含める準備ができていないコードを非表示にできます。

ビルドフラグ

ビルドフラグはビルド時の定数(文字列)であり、実行時に変更できません。このフラグは、次のような aconfig フラグを使用できない状況で使用します。

  • ビルドに含めたいプリコンパイル済みまたはビルド済みのコードがある。
  • ビルドシステム自体に変更を加えたい。
  • コードサイズを管理するために依存関係の周りにフラグを配置したい。