Configure WV HAL APEX to be updatable

- add "supportRebootless" to apex_manifest.json
- add <allowed-vendor-apex> sysconfig
- add "on property:apex.com.google.android.widevine.ready=true" to .rc

Now, we can test `adb install` new version of the APEX and see the
service is restarted from the new version.

Note that this doesn't mean that DRM Framework works fine with the
update.

Bug: 248192031
Test: adb install --force-non-staged \
   -i com.android.vending \
   $OUT/vendor/com.google.android.widevine.apex
Change-Id: I7c41b224f0bb55742c0023c23196bba4a09e555f
This commit is contained in:
Jooyung Han
2022-09-22 19:13:25 +09:00
parent 84badb3109
commit b278b4170e
4 changed files with 29 additions and 3 deletions

View File

@@ -58,6 +58,11 @@ apex {
key: "com.google.android.widevine.key",
certificate: ":com.google.android.widevine.certificate",
updatable: false,
// install sysconfig to allow the apex to be updatable
required: [
"allowlist_com.google.android.widevine.xml",
],
}
linker_config {
@@ -81,3 +86,10 @@ prebuilt_etc {
name: "com.google.android.widevine.rc",
src: "com.google.android.widevine.rc",
}
prebuilt_etc {
name: "allowlist_com.google.android.widevine.xml",
src: "allowlist_com.google.android.widevine.xml",
vendor: true,
sub_dir: "sysconfig",
}

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This XML file declares the vendor apex package names eligible for installation.
-->
<config>
<allowed-vendor-apex package="com.google.android.widevine" installerPackage="com.android.vending" />
</config>

View File

@@ -1,4 +1,5 @@
{
"name": "com.google.android.widevine",
"version": 1
"version": 1,
"supportsRebootlessUpdate": true
}

View File

@@ -1,8 +1,12 @@
on apex-ready
on property:apex.all.ready=true
mkdir /data/vendor/mediadrm 0770 media mediadrm
# Start service after update
on property:apex.com.google.android.widevine.ready=true
start vendor.drm-widevine-hal
service vendor.drm-widevine-hal /apex/com.google.android.widevine/bin/hw/android.hardware.drm-service.widevine
interface aidl android.hardware.drm::IDrmFactory/widevine
interface aidl android.hardware.drm.IDrmFactory/widevine
class hal
user media
group media mediadrm drmrpc system