AOSP には、デバイスに構成情報を保存するための次のオプションが用意されています。
- システム プロパティ
- Hardware Abstraction Layer(HAL)のプロパティ
- システム構成の XML ファイル
- リソース オーバーレイ(静的およびランタイム)
システム プロパティ
システム プロパティは、build.prop
グローバル辞書に格納されている文字列の Key-Value ペアです。システム プロパティは、容易に使用可能なシステム全体のリソースであり、パフォーマンスのオーバーヘッドを低減できます。システム プロパティの使用にあたり、システム プロパティを複数のプロセス間で共有する場合であっても、プロセス間通信(IPC)を使用する必要はありません。ただし、システム プロパティはグローバル変数に類似しており、誤って使用すると有害な場合があります。たとえば、セキュリティの脆弱性や、ユーザーがアプリにアクセスできなくなるなどの問題が発生する可能性があります。システム プロパティを使用して構成情報を保存する前に、他の構成オプションを検討してください。
システム プロパティの詳細については、システム プロパティを追加するをご覧ください。
HAL プロパティ
構成に使用する信頼できる情報源がデバイスのハードウェア コンポーネントから取得される場合、ハードウェアの HAL は対象コンポーネントの情報を提供する必要があります。構成にアクセスするために、既存の HAL に新しい HAL メソッドを定義します。HAL の開発の詳細については、HAL 用の AIDL をご覧ください。
システム構成の XML ファイル
構成データが静的であるものの複雑な(構造化されている)場合は、構成データに XML などの形式を使用することを検討してください。ファイルのスキーマが安定していることを確認します。XML ファイルの場合は、xsd_config
を使用してスキーマを安定した状態に保ち、自動生成された XML パーサーを利用できます。
リソース オーバーレイ
リソース オーバーレイを使用して、プロダクトをカスタマイズできます。リソース オーバーレイには次の 2 種類があります。
ビルド時にプロダクトをカスタマイズするために使用される標準リソース オーバーレイ。標準リソース オーバーレイの詳細については、リソース オーバーレイを使用してビルドをカスタマイズするをご覧ください。
実行時にターゲット パッケージのリソース値を変更するために使用されるランタイム リソース オーバーレイ(RRO)。たとえば、システム イメージにインストールされているアプリの動作が、リソースの値に基づいて変化する場合があります。そのような場合は、ビルド時にリソース値をハードコードするのではなく、別のパーティションにインストールした RRO によって、実行時にアプリのリソースの値を変更できます。RRO の詳細については、実行時にアプリのリソースの値を変更するをご覧ください。