署名済み構成機能を使用すると、非 SDK インターフェース制限の構成を APK に埋め込むことができます。これにより、特定の非 SDK インターフェースをブラックリストから削除することで、AndroidX が安全に使用できるようになります。その結果、AndroidX チームは、リリース済みの Android バージョンの新機能に対するサポートを追加できます。署名済み構成は Android 10 以降でサポートされます。
署名済み構成を適切にサポートすることで、今後 AndroidX ライブラリがデバイスで正しく機能するようになります。
この機能はカスタマイズできません。この機能は AOSP で完全にサポートされており、OEM がサポートする必要はありません。
例とソース
機能の実装は、システム サーバーの frameworks/base/services/core/java/com/android/server/signedconfig
にあります。CTS テスト CtsSignedConfigHostTestCases
には使用例が含まれており、cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml
にはサンプル構成があります。
実装
この機能をサポートするための作業は不要であり、特定のハードウェア要件はありません。
この機能では、2 つのアプリ メタデータキーにより APK 内に構成と署名が埋め込まれます。それらのキーは、android.settings.global
と android.settings.global.signature
です。AndroidX ライブラリで非 SDK インターフェースを今後ブラックリストから削除する必要がある場合は、これらのキーが Android チームによって(なおかつ / または)AndroidX の一部として公開されます。
APK メタデータキー android.settings.global
および android.settings.global.signature
は、どちらも base-64 でエンコードされたデータを格納しています。キー android.settings.global
の値は、SettingsProvider
のグローバル設定に適用される、JSON でエンコードされた構成値です。android.settings.global.signature
の値は、JSON データの ECDSA-p256 署名です。署名は構成データの発行元を検証するために使用されます。
この機能はユーザーからは参照できません。
カスタマイズ
この機能はカスタマイズを意図していません。OEM においては、キーの置換など、機能の変更を行わないことをおすすめします。変更すると、影響を受けるデバイスで今後 AndroidX が正常に機能しなくなる可能性があります。
検証
CTS テスト CtsSignedConfigHostTestCases
で機能の実装を検証できます。
適切な APK をインストールして adb logcat
の出力を調べることにより、手動で機能をテストすることもできます。
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...