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

Commit 28cc6e88 authored by Sundong Ahn's avatar Sundong Ahn
Browse files

Add hwbinder library

HAL impls will depend hwbinder.jar instead of framework.jar on
build-time, but on runtime framework.jar will be used.

This is to cut the circular dependency when using configstore from
Android framework. Also added JNI call to HwBinder.java to cut
configstore's dependency on systemproperty in framework.jar.

Note that hwbinder.jar is LOCAL_UNINSTALLABLE_MODULE and so it won't be
installed in an actual image.

Bug: 35771640
Test: build & run
Change-Id: I2420298cf9df5d6bbcead3e4451b703ce9bc3e29
parent 01d686b8
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -545,6 +545,32 @@ $(framework_module): | $(dir $(framework_module))framework-res.apk

framework_built := $(call java-lib-deps,framework)

# HwBinder
# =======================================================
include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
        core/java/android/os/HidlSupport.java \
        core/java/android/annotation/NonNull.java \
        core/java/android/os/HwBinder.java \
        core/java/android/os/HwBlob.java \
        core/java/android/os/HwParcel.java \
        core/java/android/os/IHwBinder.java \
        core/java/android/os/IHwInterface.java \
        core/java/android/os/DeadObjectException.java \
        core/java/android/os/DeadSystemException.java \
        core/java/android/os/RemoteException.java \
        core/java/android/util/AndroidException.java \

LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := core-oj core-libart
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := hwbinder

LOCAL_DX_FLAGS := --core-library
LOCAL_UNINSTALLABLE_MODULE := true
include $(BUILD_JAVA_LIBRARY)

# Copy AIDL files to be preprocessed and included in the SDK,
# specified relative to the root of the build tree.
# ============================================================
+9 −0
Original line number Diff line number Diff line
@@ -71,4 +71,13 @@ public abstract class HwBinder implements IHwBinder {
    }

    private long mNativeContext;

    private static native void native_report_sysprop_change();

    /**
     * Notifies listeners that a system property has changed
     */
    public static void reportSyspropChanged() {
        native_report_sysprop_change();
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include <hwbinder/ProcessState.h>
#include <nativehelper/ScopedLocalRef.h>
#include <vintf/parse_string.h>
#include <utils/misc.h>

#include "core_jni_helpers.h"

@@ -403,6 +404,11 @@ void JHwBinder_native_joinRpcThreadpool() {
    IPCThreadState::self()->joinThreadPool();
}

static void JHwBinder_report_sysprop_change(JNIEnv /**env*/, jobject /*clazz*/)
{
    report_sysprop_change();
}

static JNINativeMethod gMethods[] = {
    { "native_init", "()J", (void *)JHwBinder_native_init },
    { "native_setup", "()V", (void *)JHwBinder_native_setup },
@@ -422,6 +428,9 @@ static JNINativeMethod gMethods[] = {

    { "joinRpcThreadpool", "()V",
        (void *)JHwBinder_native_joinRpcThreadpool },

    { "native_report_sysprop_change", "()V",
        (void *)JHwBinder_report_sysprop_change },
};

namespace android {