Use explicit requirements from APEX

Previously, CAS APEX used ":sphal" and `android_load_sphal_library` to
open plugins from /vendor/lib/mediacas. It was a workaround because
there's no way to limit the scope to /vendor/lib/mediacas. And CAS
plugins are not SPHAL libraries.

Now, the APEX uses more explicit requirements: ":mediacas", which
limitss the scope to /vendor/lib/mediacas.

Bug: 298542407
Test: atest CtsMediaMiscTestCases:MediaCasTest
Change-Id: Id91a87e0f6ef8a761e37cabed7da8b9fed0591c2
This commit is contained in:
Jooyung Han 2023-10-12 16:37:03 +09:00
parent fa2dd8e2ad
commit 9e73b2047a
3 changed files with 4 additions and 7 deletions

View file

@ -57,7 +57,6 @@ cc_defaults {
shared_libs: [
"libbinder_ndk",
"liblog",
"libvndksupport",
],
header_libs: ["media_plugin_headers"],
}

View file

@ -19,7 +19,6 @@
#include "SharedLibrary.h"
#include <dlfcn.h>
#include <utils/Log.h>
#include <vndksupport/linker.h>
namespace aidl {
namespace android {
@ -27,12 +26,12 @@ namespace hardware {
namespace cas {
SharedLibrary::SharedLibrary(const String8& path) {
mLibHandle = android_load_sphal_library(path.c_str(), RTLD_NOW);
mLibHandle = dlopen(path.c_str(), RTLD_NOW);
}
SharedLibrary::~SharedLibrary() {
if (mLibHandle != NULL) {
android_unload_sphal_library(mLibHandle);
dlclose(mLibHandle);
mLibHandle = NULL;
}
}

View file

@ -1,9 +1,8 @@
{
"name": "com.android.hardware.cas",
"version": 1,
// For CAS HAL to open plugins from /vendor/lib, "vendor" namespace should be imported.
// ":sphal" is an alias for the "vendor" namespace in Vendor APEX.
// For CAS HAL to open plugins from /vendor/lib/mediacas
"requireNativeLibs": [
":sphal"
":mediacas"
]
}