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

Commit a2b78e4d authored by Tej Singh's avatar Tej Singh
Browse files

Create libstats_jni

This cl creates libstats_jni, puts the android_util_StatsLog class in it
to implement the jni StatsLog.writeImpl() call, and puts the library in
the statsd apex.

Right now, it does NOT load the library properly and therefore the
library is still in the platform. It needs to be removed from the
platform.

Test: boots
Test: adb shell cmd stats print-logs shows logs still flow
Bug: 147315667
Change-Id: I0a06b66d4640d00ee75bc273423b33dafc944b05
parent c2411e97
Loading
Loading
Loading
Loading
+33 −2
Original line number Diff line number Diff line
@@ -19,8 +19,9 @@ apex {
}

apex_defaults {
    // libc.so and libcutils.so are included in the apex
    // native_shared_libs: ["libc", "libcutils"],
    native_shared_libs: [
        "libstats_jni",
    ],
    // binaries: ["vold"],
    java_libs: [
        "framework-statsd",
@@ -44,3 +45,33 @@ android_app_certificate {
    // com.android.os.statsd.pk8 (the private key)
    certificate: "com.android.os.statsd",
}


// JNI library for StatsLog.write
cc_library_shared {
    name: "libstats_jni",
    srcs: ["jni/**/*.cpp"],
    shared_libs: [
        "libnativehelper", // Has stable abi - should not be copied into apex.
        "liblog",  // Has a stable abi - should not be copied into apex.
    ],
    static_libs: [
        //TODO: make shared - need libstatssocket to also live in the apex.
        "libstatssocket",
        "libcutils", // TODO: remove - needed by libstatssocket
    ],
    //TODO: is libc++_static correct?
    stl: "libc++_static",
    cflags: [
        "-Wall",
        "-Werror",
        "-Wextra",
        "-Wno-unused-parameter",
    ],
    apex_available: [
        "com.android.os.statsd",
        "test_com.android.os.statsd",
        //TODO (b/148620413): remove platform.
         "//apex_available:platform",
    ],
}
 No newline at end of file
+23 −6
Original line number Diff line number Diff line
@@ -17,12 +17,9 @@
#define LOG_NAMESPACE "StatsLog.tag."
#define LOG_TAG "StatsLog_println"

#include <assert.h>

#include "jni.h"
#include <log/log.h>
#include <nativehelper/JNIHelp.h>
#include "utils/misc.h"
#include "core_jni_helpers.h"
#include "stats_buffer_writer.h"

namespace android {
@@ -57,7 +54,27 @@ static const JNINativeMethod gMethods[] = {

int register_android_util_StatsLog(JNIEnv* env)
{
    return RegisterMethodsOrDie(env, "android/util/StatsLog", gMethods, NELEM(gMethods));
    return jniRegisterNativeMethods(env, "android/util/StatsLog", gMethods, NELEM(gMethods));
}

}; // namespace android

/*
 * JNI Initialization
 */
jint JNI_OnLoad(JavaVM* jvm, void* reserved) {
    JNIEnv* e;
    int status;

    ALOGV("statsd : loading JNI\n");
    // Check JNI version
    if (jvm->GetEnv((void**)&e, JNI_VERSION_1_4)) {
        ALOGE("JNI version mismatch error");
        return JNI_ERR;
    }
    status = android::register_android_util_StatsLog(e);
    if (status < 0) {
        ALOGE("jni statsd registration failure, status: %d", status);
        return JNI_ERR;
    }
    return JNI_VERSION_1_4;
}
+0 −1
Original line number Diff line number Diff line
@@ -147,7 +147,6 @@ cc_library_shared {
                "android_service_DataLoaderService.cpp",
                "android_util_AssetManager.cpp",
                "android_util_Binder.cpp",
                "android_util_StatsLog.cpp",
                "android_util_MemoryIntArray.cpp",
                "android_util_Process.cpp",
                "android_util_StringBlock.cpp",
+0 −2
Original line number Diff line number Diff line
@@ -108,7 +108,6 @@ namespace android {
extern int register_android_app_admin_SecurityLog(JNIEnv* env);
extern int register_android_content_AssetManager(JNIEnv* env);
extern int register_android_util_EventLog(JNIEnv* env);
extern int register_android_util_StatsLog(JNIEnv* env);
extern int register_android_util_StatsLogInternal(JNIEnv* env);
extern int register_android_util_Log(JNIEnv* env);
extern int register_android_util_MemoryIntArray(JNIEnv* env);
@@ -1441,7 +1440,6 @@ static const RegJNIRec gRegJNI[] = {
    REG_JNI(register_android_util_EventLog),
    REG_JNI(register_android_util_Log),
    REG_JNI(register_android_util_MemoryIntArray),
    REG_JNI(register_android_util_StatsLog),
    REG_JNI(register_android_util_StatsLogInternal),
    REG_JNI(register_android_app_admin_SecurityLog),
    REG_JNI(register_android_content_AssetManager),
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ cc_library_shared {
        "libgui",
        "libharfbuzz_ng",  // Only for including hb.h via minikin
        "libsensor",
        "libstats_jni",
        "libandroid_runtime",
        "libminikin",
        "libnetd_client",