Android IOS WebRTC 音视频开发总结(十七)-- 调试技巧

本文章主要介绍WEBRTC在各平台下调试或日志查看方式,以方便问题排查,包括BS,PC,Android,IOS(本系列文章转载请说明出处,博客园RTC.Blacker).java

 

1,浏览器开发:linux

这种开发方式不须要下载和编译WEBRTC源码(不少人都是"死"在这里的,不过确实很麻烦,缘由就不赘述了),直接调用浏览器提供的API,android

入门相对简单(这并不意味着效果差,偏偏相反,由于浏览器厂商为你作了不少的优化,不少时候效果比本身去弄好多了).web

这种方式的缺陷就是没法修改底层代码,若是您想调整一些实现方式或与现有系统结合就很差弄了.设计模式

因此若是这种方式出问题了通常都是您本身的问题,相应的查问题方式就是console.log和wireshake之类的工具.xcode

  

2,Android开发:浏览器

这部分是我要重点介绍的,不少不熟悉ndk或linux的不知道怎么去查看底层的日志,其实经过logcat您能够比较方便地看到底层的输出.eclipse

若是您正在使用Talk进行开发,可参考以下调用方式:函数

若是没有使用到libjingle,可参考MediaEngine.java的调用方式:工具

Logging.java在JNI中实现以下:

构造g_trace_callback是由于须要在其构造函数中注册一个callback,LogcatTraceContext实现以下:

呵呵呵,搞过ndk开发的,很熟悉__android_log_print这个函数吧.

这时候您可能会有疑问,若是要在调用Logging.enableTracing()方法前查看初始化libjingle环境的日志,怎么搞呢?

请看WebRtcVoiceEngine构造函数的实现:

它在构造函数里面直接注册callback,当webrtc须要输出log的时候就能够直接执行本身定义的callback,

这样就能够很好滴控制日志的输出,设计得很巧妙,比看啥设计模式的理论书籍都管用.

这时候您还有新的疑问,若是要在调用Logging.enableTracing()方法前查看webrtc底层的日志,怎么办呢?

下面这些代码是我本身加上去的(不是最好的方案),由于webrtc目前还不完善的缘由,日志都搞得这么复杂(历史缘由就是webrtc与talk是后面才整合到一块儿的),估计他们后面会改得更合理,因此我也这样先将就着,呵呵.


3,PC开发:

PC上基本上都是用VS在开发,很好调试,既能够将日志输出到控制台,还能够直接在代码中下断点,或者抓包,手段不少,操做起来也不复杂.

 

4,iOS开发:

xcode跟vs差很少,很方便,无需赘述.

吐槽一句,xcode,eclipse,virtual machine一块儿运行,mac表示很吃力,机器又得升级换代了,下个月的信用卡哦,亚历山大.

相关文章
相关标签/搜索