署名済み構成の実装

署名済み構成機能を使用すると、非 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.globalandroid.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
...