android 在Java核心库libcore中打印log
2012-08-29 16:41
615 查看
发现在/libcore/luni目录 也就是java的核心库里面,不能用Log 。。。。
怎么办呢?
http://blog.csdn.net/a345017062/article/details/6436264#reply
看了篇博客,博主啊 看的我是懂非懂的,自己做了下,记录在下
思路就是在核心库里面搭建一套调用log的框架,也就是搭建JNI;
比如 我想在./libcore/luni/src/main/java/java/io/File.java里面打印log
步骤1.将frameworks/base/core/java/android/util/Log.java里面的本地方法copy到File.java文件里面;另外建立Log()方法;
发现我的类型都是private了吧,以前的是public,不修改的话编译的时候会错;
步骤2.把/frameworks/base/core/jni/android_util_Log.cpp中对之对应的本地方法copy到libcore/luni/src/main/native/java_io_File.cpp,加在static JNINativeMethod gMethods[ ]之前就行;下面是copy的本地方法
步骤3.在libcore/luni/src/main/native/java_io_File.cpp文件中加入Log注册本地方法
里面的{ "println_native", "(IILjava/lang/String;Ljava/lang/String;)I", (void*) android_util_Log_println_native },就是在frameworks/base/core/jni/android_util_Log.cpp里面的static JNINativeMethod gMethods[] ={}注册方法,我只是把他copy了过来;
ok,现在我们就可以在./libcore/luni/src/main/java/java/io/File.java里面的任何位置,用刚定义的Log( )方法打印自己需要的log了。
怎么办呢?
http://blog.csdn.net/a345017062/article/details/6436264#reply
看了篇博客,博主啊 看的我是懂非懂的,自己做了下,记录在下
思路就是在核心库里面搭建一套调用log的框架,也就是搭建JNI;
比如 我想在./libcore/luni/src/main/java/java/io/File.java里面打印log
步骤1.将frameworks/base/core/java/android/util/Log.java里面的本地方法copy到File.java文件里面;另外建立Log()方法;
//下面的是建立log方法;
private static final int LOG_ID_MAIN = 0; private static final int DEBUG = 3; private static int Log(String tag, String msg) { return println_native(LOG_ID_MAIN, DEBUG, tag, msg); }
//Log.java里面的本地方法 private static native int println_native(int bufID, int priority, String tag, String msg);
发现我的类型都是private了吧,以前的是public,不修改的话编译的时候会错;
步骤2.把/frameworks/base/core/jni/android_util_Log.cpp中对之对应的本地方法copy到libcore/luni/src/main/native/java_io_File.cpp,加在static JNINativeMethod gMethods[ ]之前就行;下面是copy的本地方法
static jint android_util_Log_println_native(JNIEnv* env, jobject clazz, jint bufID, jint priority, jstring tagObj, jstring msgObj) { ... ... }
步骤3.在libcore/luni/src/main/native/java_io_File.cpp文件中加入Log注册本地方法
static JNINativeMethod gMethods[] = { ... ... { "println_native", "(IILjava/lang/String;Ljava/lang/String;)I", (void*) android_util_Log_println_native }, };
里面的{ "println_native", "(IILjava/lang/String;Ljava/lang/String;)I", (void*) android_util_Log_println_native },就是在frameworks/base/core/jni/android_util_Log.cpp里面的static JNINativeMethod gMethods[] ={}注册方法,我只是把他copy了过来;
ok,现在我们就可以在./libcore/luni/src/main/java/java/io/File.java里面的任何位置,用刚定义的Log( )方法打印自己需要的log了。
相关文章推荐
- 在Android核的java核心库libcore中打印log,和单独编译
- 在Android核的java核心库中打印log
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- Android JNI编程(八)——体验AS2.2.2编写Jni程序、Java调C、C调Java函数、将C代码中的Log打印至Logcat
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- Android JNI编程(八)——体验AS2.2.2编写Jni程序、Java调C、C调Java函数、将C代码中的Log打印至Logcat
- Android Java层,Native层,Lib层打印Log简介
- Android c/c++层打印log信息和java层打印log信息
- 在Java核心库中打印log
- android的Log日志打印管理工具类(一)
- 有些品牌Android真机无法打印log解决办法
- Android中调用c函数来打印log---(JNI)
- Linux串口工具ckermit打印 android log
- Android核心分析(18)-----Android电话系统之RIL-Java
- Android Stuido Ndk-Jni 开发(二):Jni中打印log信息
- 【Android】封装一个简单好用的打印Log的工具类
- 酷派手机(Coolpad 8297-T01)在Android开发工具如AndroidStudio、Eclipse中无法打印Log
- android log打印显示不全的原因
- Android Log输出 log开关 日志打印器 LogUtil
- android___android_log_print打印函数__源代码