署名された構成の実装

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.globalandroid.settings.global.signatureです。 AndroidXライブラリでSDK以外のインターフェースをブラックリストから削除する必要がある場合、またはそのときに、これらのキーの値はAndroidチームによって公開されるか、AndroidXの一部として公開されます。

APKメタデータキーandroid.settings.globalandroid.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
...