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

Commit d26b6cf3 authored by Jooyung Han's avatar Jooyung Han Committed by Gerrit Code Review
Browse files

Merge "Add CAS HAL APEX" into main

parents 761e419f 4fb30ff5
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"
    ]
}