Signed Config機能を使用すると、SDK以外のインターフェイス制限の構成をAPKに埋め込むことができます。これにより、特定の非SDKインターフェースをブラックリストから削除して、AndroidXがそれらを安全に使用できるようになります。これにより、AndroidXチームは、すでにリリースされているAndroidバージョンの新機能のサポートを追加できます。 Android10以降でサポートされています。
Signed Configを適切にサポートすることで、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
...