Add widevine vendor apex

Bug: 243699259
Change-Id: Ifa5c1b621a9fc0b6d370124fad7de1334c537c65
This commit is contained in:
Kyle Zhang
2022-08-30 23:32:11 +00:00
parent 3ec4679ff2
commit b9c4bfdaf7
15 changed files with 221 additions and 9 deletions

View File

@@ -268,7 +268,6 @@ cc_binary {
init_rc: ["src/android.hardware.drm-service.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
@@ -290,8 +289,7 @@ cc_binary {
shared_libs: ["libbinder_ndk"],
init_rc: ["src/android.hardware.drm-service-lazy.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm-service.widevine.xml"],
vintf_fragments: ["manifest_android.hardware.drm-service-lazy.widevine.xml"],
}
// ----------------------------------------------------------------------------
@@ -371,7 +369,6 @@ cc_library_static {
],
srcs: cdm_util_src_files,
}
// ----------------------------------------------------------------------------
@@ -537,13 +534,12 @@ cc_library_shared {
owner: "widevine",
proprietary: true,
}
phony {
name: "android.hardware.drm@latest-service.widevine",
required: [
"android.hardware.drm-service.widevine",
"com.google.android.widevine",
],
}

View File

@@ -0,0 +1,54 @@
// Copyright (C) 2022 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
apex {
name: "com.google.android.widevine",
vendor: true,
manifest: "apex_manifest.json",
prebuilts: [
"com.google.android.widevine.rc",
"widevine-linker-config",
],
binaries: ["android.hardware.drm-service.widevine"],
// TODO(b/239054171) embed vintf_fragment in the apex.
vintf_fragments: ["com.google.android.widevine.xml"],
compile_multilib: "both",
file_contexts: "file_contexts",
use_vndk_as_stable: true,
key: "com.google.android.widevine.key",
certificate: ":com.google.android.widevine.certificate",
updatable: false,
}
linker_config {
name: "widevine-linker-config",
src: "linker.config.json",
installable: false,
}
apex_key {
name: "com.google.android.widevine.key",
public_key: "com.google.android.widevine.avbpubkey",
private_key: "com.google.android.widevine.pem",
}
android_app_certificate {
name: "com.google.android.widevine.certificate",
certificate: "com.google.android.widevine",
}
prebuilt_etc {
name: "com.google.android.widevine.rc",
src: "com.google.android.widevine.rc",
}

View File

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

View File

@@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
NeDaCQSbZnEP9SYC+JZstmKE/Uwqyw==
-----END PRIVATE KEY-----

Binary file not shown.

View File

@@ -0,0 +1,10 @@
on apex-ready
mkdir /data/vendor/mediadrm 0770 media mediadrm
service vendor.drm-widevine-hal /apex/com.google.android.widevine/bin/hw/android.hardware.drm-service.widevine
interface aidl android.hardware.drm::IDrmFactory/widevine
class hal
user media
group media mediadrm drmrpc system
ioprio rt 4
task_profiles ProcessCapacityHigh

View File

@@ -0,0 +1,35 @@
-----BEGIN CERTIFICATE-----
MIIGJzCCBA+gAwIBAgIUCgS86NBn7DoD3rVyOm1iQAcTfPowDQYJKoZIhvcNAQEL
BQAwgaExCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy
b2lkMR0wGwYDVQQDDBRjb20uYW5kcm9pZC53aWRldmluZTEiMCAGCSqGSIb3DQEJ
ARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAgFw0yMjA4MzAyMDQ0MjhaGA80NzYwMDcy
NjIwNDQyOFowgaExCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQL
DAdBbmRyb2lkMR0wGwYDVQQDDBRjb20uYW5kcm9pZC53aWRldmluZTEiMCAGCSqG
SIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBALj/ULAiAD/wWpFRG/MjnnCFB5qNaEzIPs9xXtxCtR8P2/q2
05VXiEK2uXWUoFSsyfdV7q5wX+B9lRnHAdVRWf2odf7G0/aM9h7F/Vtr5H1Yb9JU
gFArhgcpbFVFxuFyjdTiIdJYFzZxoT/IctDHsGNAFscvcQtzOKk3Plg0Sr6105QE
AZqw3HqZDmnjijgAq1Sc3dznx0DI7B57d3mMMvL/JTQfiwbqKGK6VHFoMYlKUrmD
xDJ4g8iEnVG1RIyoxiGgItbNIQQjh44t9nndDFJC+wIcrv++t8wcYEvkI8wFkCuw
hG8v8/p0lpqo/OPQNBbWSaGOHVMmdQO2dQ5YEwBZOHJ23i654RI8VHgfhm4PH1B7
b0Qav27Bs0YDJPY6PUrEFgTo2299r4qCfGChxXD6r0WeVqD6lTCkeV76NtQOmBnO
1ZQ2xOhj1NCn7SCHH7GHbHbgBI84sVerUWETtb9+ZpSLItgzho1Fb3XDp9u244kO
pUN5qgPFaipSe4LjZf0r9iXGMXYgQTi+OlUqrYcHR7Oz9SaWCQoqk7J92Pskd7dB
mFZF7ghuKAYSQf6jYCSux60OEtK6jN3sTJW50Zb7Qnz9U0nKoaN2xzmuHR41XKUq
Z0sh4EFYj3kcLeQhSnWPZ65s2t784uYfV1/0i5eHwxj6rLA+1VWQr4evf0k/AgMB
AAGjUzBRMB0GA1UdDgQWBBQqjWyCvgqoov7Ko/eidxfa9+TBJzAfBgNVHSMEGDAW
gBQqjWyCvgqoov7Ko/eidxfa9+TBJzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
DQEBCwUAA4ICAQA+sElhd7fMrhtWNaxFajWqhtDjfg2lxRjl4txYITyMC6ITtvuD
3Wi2c9VxDQj3x8M7L1eWEfq5pZOgzrm1wqhgKc0jbpdplm4QdfatdsDWVGPauxmK
C2ZGpPsHwIXgzZ0Zj9gi8Lk6xVN2HAS2aDsaOWhmT1mwkDwW9oMpEQK2ZGA7YHgH
/HsvolI5BAO9XDqdBUMi9+VwfMNGeCSfc1iMb+kDZbVThMHI4yKf6ikIuGgjr0En
G0Q0/ME38vN0c3LWz+Xgy2oHPEEn2NAOAdFSA4NpjR/BEkZk1rJb1jyyfsuFnKbF
0MkrNxnUfsn1tUxdGBT13+BEOMNGB30PoV4U6PsKkH4juFJ0LraSzWpggFy6YGFi
qOJ8hgwrmdC5mWxSDmi4GfeoUacsSppBld1H4lUAwbpJykbr1cNI6ZzuaO6o01DB
u2FmqVEAnItMhTeR0uOsiNJUPX8l/GmpxS7Uh2gzGaTHRPzReCGNVzcGIvez4OEQ
mRNFjdmNjAVGph+Pa2mqj+n7aItgOmPWKArtrGaNxPTgvWV/8GAQanfhwNN3NgPn
wtRdQtwXYv365DnRu3RHmOtQkAZcOOeYybFTntSxnylVvaSJds+4+K7mhQulr1oY
vqbbKP1DY8WOFBVjURDX7BiJDM1EnOOpWdEGbpVL7D1vx/hhvFSWbWm5BQ==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2022 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manifest version="1.0" type="device">
<hal format="aidl">
<name>android.hardware.drm</name>
<version>1</version>
<fqname>IDrmFactory/widevine</fqname>
</hal>
</manifest>

View File

@@ -0,0 +1,3 @@
(/.*)? u:object_r:vendor_file:s0
/bin/hw/android\.hardware\.drm-service\.widevine u:object_r:hal_drm_widevine_exec:s0
/etc(/.*)? u:object_r:vendor_configs_file:s0

View File

@@ -0,0 +1,3 @@
{
"permittedPaths": ["/vendor/${LIB}"]
}

View File

@@ -77,5 +77,4 @@ cc_library_static {
],
proprietary: true,
}

View File

@@ -42,6 +42,7 @@ using namespace wvoec3;
using video_widevine::ProvisioningResponse;
using wvcdm::kLevel3;
using wvcdm::kLevelDefault;
using namespace std;
namespace {
@@ -931,7 +932,19 @@ class Adapter {
return result;
}
if (level1_library_ == nullptr) {
level1_library_ = dlopen(library_name.c_str(), RTLD_NOW);
vector<string> library_paths = {"/vendor/", "/system/", "/odm/"};
string sub_dir;
#if __LP64__
sub_dir = "lib64/";
#else
sub_dir = "lib/";
#endif
for (auto& path : library_paths) {
level1_library_ = dlopen((path + sub_dir + library_name).c_str(), RTLD_NOW);
if (level1_library_) break;
}
if (level1_library_ == nullptr) {
LOGW("Could not load %s. Falling back to L3. %s", library_name.c_str(),
dlerror());

View File

@@ -74,5 +74,4 @@ cc_library_static {
proprietary: true,
owner: "widevine",
}

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2022 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manifest version="1.0" type="device">
<hal format="aidl">
<name>android.hardware.drm</name>
<version>1</version>
<fqname>IDrmFactory/widevine</fqname>
</hal>
</manifest>