機能リリースフラグは、コードブランチの安定性を確保するための手段として Google で使用されます。このフラグは、AOSP への特定のタイプのコントリビューションにも必要となります。機能リリースフラグを実装する前に、変更にフラグが必要かどうかを判断します。さらに、フラグが必要な場合は、使用するフラグの種類を決める必要があります。
フラグを使用するか判断する
機能リリースフラグを使用するかを判断するには、次のガイドラインを使用します。
新機能の追加や特に複雑なバグの修正など、AOSP コードベースが不安定になる可能性のある変更を行う場合は、機能リリースフラグを使用します。
逆に、コメントの変更など、コードベースが不安定になる可能性の低いコード変更を行う場合は、機能リリースフラグを使用する必要はありません。
フラグの種類を決める
フラグには、aconfig フラグとビルドフラグの 2 種類があります。
aconfig フラグ
aconfig フラグは、テストとリリースのプロセスで、未リリースのコードの実行とリリース済みコードの実行を分離するために使用されます。aconfig フラグは、読み取り / 書き込み、または読み取り専用にできます。
読み取り / 書き込み aconfig フラグは、実行時に有効(
true
に設定)または無効(false
に設定)にできるブール値変数です。読み取り / 書き込みフラグを使用すると、メインブランチの安定性を損ねることなく変更のテストとリリースができます。読み取り専用 aconfig フラグは、実行時に変更できないブール値定数です。コードが安定していて、リリースの準備が整っている場合は、読み取り / 書き込み aconfig フラグを読み取り専用 aconfig フラグに変換できます。
また、使用しているコンパイラによっては、読み取り専用フラグが使用されている場合、実行されないコードがビルドから除外される場合があります。そこで、読み取り専用フラグを使用して、リリースに含める準備ができていないコードを非表示にできます。
ビルドフラグ
ビルドフラグはビルド時の定数(文字列)であり、実行時に変更できません。このフラグは、次のような aconfig フラグを使用できない状況で使用します。
- ビルドに含めたいプリコンパイル済みまたはビルド済みのコードがある。
- ビルドシステム自体に変更を加えたい。
- コードサイズを管理するために依存関係の周りにフラグを配置したい。