Here https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/util/Log.java is the android.util.Log
源代码。
在最底部(第 340 行),该方法的内容是:
public static native int println_native(int bufID,
int priority, String tag, String msg);
i guess println_native()
或多或少像它的println()
,只需一个int bufID
不同的。
但即使我得到了代码println_native()
,我还缺乏com.android.internal.os.RuntimeInit
(第 19 行,import
) 模拟android.util.Log
在旧的Android版本中。
刚刚对 android 源代码进行了一些挖掘。该函数映射到
static jint android_util_Log_println_native(JNIEnv* env, jobject clazz,
jint bufID, jint priority, jstring tagObj, jstring msgObj)
{
const char* tag = NULL;
const char* msg = NULL;
if (msgObj == NULL) {
jniThrowNullPointerException(env, "println needs a message");
return -1;
}
if (bufID < 0 || bufID >= LOG_ID_MAX) {
jniThrowNullPointerException(env, "bad bufID");
return -1;
}
if (tagObj != NULL)
tag = env->GetStringUTFChars(tagObj, NULL);
msg = env->GetStringUTFChars(msgObj, NULL);
int res = __android_log_buf_write(bufID, (android_LogPriority)priority, tag, msg);
if (tag != NULL)
env->ReleaseStringUTFChars(tagObj, tag);
env->ReleaseStringUTFChars(msgObj, msg);
return res;
}
基本上,这会将参数传递给系统中的驱动程序,该驱动程序会写入日志缓冲区。日志缓冲区由/dev/log
在Linux内核中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)