本文章主要介紹WEBRTC在各平台下調試或日志查看方式,以方便問題排查,包括BS,PC,Android,IOS(本系列文章轉載請說明出處,博客園RTC.Blacker).
1,瀏覽器開發:
這種開發方式不需要下載和編譯WEBRTC源碼(很多人都是"死"在這里的,不過確實很麻煩,原因就不贅述了),直接調用瀏覽器提供的API,
入門相對簡單(這並不意味着效果差,恰恰相反,因為瀏覽器廠商為你做了很多的優化,很多時候效果比自己去弄好多了).
這種方式的缺陷就是無法修改底層代碼,如果您想調整一些實現方式或與現有系統結合就不好弄了.
所以如果這種方式出問題了一般都是您自己的問題,相應的查問題方式就是console.log和wireshake之類的工具.
2,Android開發:
這部分是我要重點介紹的,很多不熟悉ndk或linux的不知道怎么去查看底層的日志,其實通過logcat您可以比較方便地看到底層的輸出.
如果您正在使用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表示很吃力,機器又得升級換代了,下個月的信用卡哦,亞歷山大.