Android 日志中的 d 方法 class

d method in Android Log class

我很好奇静态方法:dvv 等方法在 Android 中的工作原理。我已经打开了源代码,因此方法 dv 等唯一要做的就是调用静态 println方法,但是这个函数什么都不做。附上来自 Log.class 文件的 println 方法代码:

 public static int println(int priority, String tag, String msg) {
    return println(LOG_ID_MAIN, priority, tag, msg);
}

/** @hide */ public static final int LOG_ID_MAIN = 0;
/** @hide */ public static final int LOG_ID_RADIO = 1;
/** @hide */ public static final int LOG_ID_EVENTS = 2;
/** @hide */ public static final int LOG_ID_SYSTEM = 3;
/** @hide */ public static final int LOG_ID_CRASH = 4;

/** @hide */ @SuppressWarnings("unused")
public static int println(int bufID,
        int priority, String tag, String msg) {
    return 0;

我确定您没有正确关联源代码。如果正确关联源代码,应该会看到与下图相同的代码。

网上可以看到println_native方法是如何实现的

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/util/Log.java

https://android.googlesource.com/platform/frameworks/base/+/master/core/jni/android_util_Log.cpp


我上传了java方法与native方法关联的方式。关于JNI的说明,可以参考here.