Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4fb30ff5 authored by Jooyung Han's avatar Jooyung Han
Browse files

Add CAS HAL APEX

The new apex replaces android.hardware.cas-service.example.

Bug: 297467514
Test: atest CtsMediaMiscTestCases:MediaCasTest
Change-Id: I802ab0fe8ffbefd6c1ff9343f6046701fa94029f
parent 01fc1b72
Loading
Loading
Loading
Loading
+45 −7
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ cc_library_static {
        "liblog",
        "libutils",
        "libcutils",
        "libvndksupport",
    ],
    static_libs: [
        "libaidlcommonsupport",
@@ -43,34 +44,39 @@ cc_defaults {

    srcs: ["service.cpp"],

    stl: "c++_static",
    static_libs: [
        "android.hardware.cas-V1-ndk",
        "android.hardware.common-V2-ndk",
        "libaidlcommonsupport",
        "libbase",
        "libcasexampleimpl",
        "libcutils",
        "libutils",
    ],
    shared_libs: [
        "android.hardware.cas-V1-ndk",
        "libbase",
        "libbinder_ndk",
        "liblog",
        "libutils",
        "libcutils",
        "libvndksupport",
    ],
    header_libs: ["media_plugin_headers"],
    vintf_fragments: ["android.hardware.cas-service.xml"],
}

cc_binary {
    name: "android.hardware.cas-service.example",
    defaults: ["cas_service_example_defaults"],
    init_rc: ["cas-default.rc"],
    // Installed in APEX
    installable: false,
}

// TODO(b/297467514) Convert to VAPEX
cc_binary {
    name: "android.hardware.cas-service.example-lazy",
    defaults: ["cas_service_example_defaults"],
    init_rc: ["cas-default-lazy.rc"],
    vintf_fragments: ["android.hardware.cas-service.xml"],
    cflags: ["-DLAZY_SERVICE"],
    overrides: ["android.hardware.cas-service.example"],
    overrides: ["com.android.hardware.cas"],
}

cc_fuzz {
@@ -84,6 +90,7 @@ cc_fuzz {
        "android.hardware.cas-V1-ndk",
        "libcutils",
        "liblog",
        "libvndksupport",
    ],
    static_libs: [
        "libaidlcommonsupport",
@@ -94,3 +101,34 @@ cc_fuzz {
        componentid: 1344,
    },
}

apex {
    name: "com.android.hardware.cas",
    manifest: "manifest.json",
    file_contexts: "file_contexts",
    key: "com.android.hardware.key",
    certificate: ":com.android.hardware.certificate",
    updatable: false,
    vendor: true,

    binaries: [
        "android.hardware.cas-service.example",
    ],
    prebuilts: [
        "cas-default.rc",
        "android.hardware.cas-service.xml",
    ],
}

prebuilt_etc {
    name: "cas-default.rc",
    src: "cas-default.rc",
    installable: false,
}

prebuilt_etc {
    name: "android.hardware.cas-service.xml",
    src: "android.hardware.cas-service.xml",
    sub_dir: "vintf",
    installable: false,
}
+3 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include "SharedLibrary.h"
#include <dlfcn.h>
#include <utils/Log.h>
#include <vndksupport/linker.h>

namespace aidl {
namespace android {
@@ -26,12 +27,12 @@ namespace hardware {
namespace cas {

SharedLibrary::SharedLibrary(const String8& path) {
    mLibHandle = dlopen(path.c_str(), RTLD_NOW);
    mLibHandle = android_load_sphal_library(path.c_str(), RTLD_NOW);
}

SharedLibrary::~SharedLibrary() {
    if (mLibHandle != NULL) {
        dlclose(mLibHandle);
        android_unload_sphal_library(mLibHandle);
        mLibHandle = NULL;
    }
}
+1 −1
Original line number Diff line number Diff line
service vendor.cas-default /vendor/bin/hw/android.hardware.cas-service.example
service vendor.cas-default /apex/com.android.hardware.cas/bin/hw/android.hardware.cas-service.example
    interface aidl android.hardware.cas.IMediaCasService/default
    class hal
    user media
+3 −0
Original line number Diff line number Diff line
(/.*)?                                                          u:object_r:vendor_file:s0
/etc(/.*)?                                                      u:object_r:vendor_configs_file:s0
/bin/hw/android\.hardware\.cas-service\.example                 u:object_r:hal_cas_default_exec:s0
+9 −0
Original line number Diff line number Diff line
{
    "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.
    "requireNativeLibs": [
        ":sphal"
    ]
}