Android浏览器插件开发-Log

来源:互联网 发布:java nio原理 编辑:程序博客网 时间:2024/05/19 22:54
 1876人阅读 评论(1) 收藏 举报

转载请注明出处:http://blog.csdn.net/awebkit


    android中的插件开发中的示例代码已经给我们说明了如何打log,参看示例代码main.cpp

[cpp] view plaincopy
  1. for (int i = 0; i < argc; i++) {  
  2.     if (!strcmp(argn[i], "DrawingModel")) {  
  3.         if (!strcmp(argv[i], "Bitmap")) {  
  4.             model = kBitmap_ANPDrawingModel;  
  5.         }     
  6.         else if (!strcmp(argv[i], "Surface")) {  
  7.            model = kSurface_ANPDrawingModel;  
  8.         }     
  9.         gLogI.log(kDebug_ANPLogType, "------ %p DrawingModel is %d", instance, model);  
  10.         break;  
  11.     }     
  12. }     
    我们可以使用gLogI.log打印调试信息。

    gLogI的定义如下

[plain] view plaincopy
  1. ANPLogInterfaceV0           gLogI;  

     ANPLogInterfaceV0的定义如下(Android_npapi.h)

[cpp] view plaincopy
  1. struct ANPLogInterfaceV0 : ANPInterface {  
  2.     /** dumps printf messages to the log file 
  3.         e.g. interface->log(instance, kWarning_ANPLogType, "value is %d", value); 
  4.      */  
  5.     void (*log)(ANPLogType, const char format[], ...);  
  6. };  
       该结构的赋值如下(ANPLogInterface.cpp)
[cpp] view plaincopy
  1. static void anp_log(ANPLogType logType, const char format[], ...) {  
  2.     va_list args;  
  3.     va_start(args, format);  
  4.   
  5.     android_LogPriority priority;  
  6.     switch (logType) {  
  7.         case kError_ANPLogType:  
  8.             priority = ANDROID_LOG_ERROR;  
  9.             break;  
  10.         case kWarning_ANPLogType:  
  11.             priority = ANDROID_LOG_WARN;  
  12.             break;  
  13.         case kDebug_ANPLogType:  
  14.             priority = ANDROID_LOG_DEBUG;  
  15.             break;  
  16.         default:  
  17.             priority = ANDROID_LOG_UNKNOWN;  
  18.             break;  
  19.     }  
  20.     LOG_PRI_VA(priority, "plugin", format, args);  
  21.   
  22.     va_end(args);  
  23. }  
  24.   
  25. void ANPLogInterfaceV0_Init(ANPInterface* value) {  
  26.     ANPLogInterfaceV0* i = reinterpret_cast<ANPLogInterfaceV0*>(value);  
  27.   
  28.     i->log = anp_log;  
  29. }  
    而LOG_PRI_VA的调用关系如下 

[plain] view plaincopy
  1. LOG_PRI_VA@Log.h  
  2. android_vprintLog@Log.h  
  3.  __android_log_vprint@Log.h  
  4. __android_log_write@logd_write.c  
  5. write_to_log@logd_write.c  
  6. __write_to_log_init@logd_write.c  
  7. __write_to_log_kernel@logd_write.c  
  8. writev@uio.c  


    注:

    1. 插件的打印信息的channel为plugin

    2. android系统据我所知,只有如下log会受到是否打开DEBUG的影响

         LOGV*  LOG_FATAL*
0 0
原创粉丝点击