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表示很吃力,機器又得升級換代了,下個月的信用卡哦,亞歷山大.

相關文章
相關標籤/搜索