前言:
現(xiàn)在很多it公司都有做網(wǎng)絡免費電話的意愿仁烹,而老牌開源項目Linphone遵從sip協(xié)議是很多猿們的首選,我也不例外按咒。剛接觸Linphone時我的狀態(tài)就是懵比瞒窒,一直到現(xiàn)在我都是處于懵比狀態(tài),但是編譯之后的代碼運行在可移動設備上穩(wěn)定性還是挺好的恋技,但是我司偏偏要插個網(wǎng)線并且還要固定ip,這對網(wǎng)絡環(huán)境要求高的linphone不異于外來物種入侵拇舀,我是改了一個bug發(fā)現(xiàn)另一個bug,而且都是anr,臥擦蜻底〗颈溃可是最終發(fā)現(xiàn)這些bug的出現(xiàn)都伴有一個規(guī)律,那就是外網(wǎng)環(huán)境不通薄辅。我遇到過設備在設定了固定ip之后要拂,換網(wǎng)段anr、子網(wǎng)掩碼設置錯誤anr长搀、網(wǎng)關設置錯anr宇弛。這些坑都一一跳過,才發(fā)現(xiàn)這個世界是多么美好源请,這是我編譯的第一個開源項目枪芒,就此總結經(jīng)驗,希望大家多多指教谁尸。
Linphone項目結構舅踪,全部展開有一米七,我真是吐了一口老血良蛮,噗抽碌。噗。噗决瞳。:
編譯后的源碼? ? 密匙:aqsj
Linphone源碼編譯java層主要有幾個類:
LinphoneManager货徙、LinphoneActivity、LinphoneService皮胡、LinphoneCore痴颊、LinphoneUtil等,為了不受影響屡贺,包名還是org.linphone不要動蠢棱。
1> LinphoneManager 操作包锌杀,初始化以及各狀態(tài)的實現(xiàn)
2> LinphoneActivity為主界面
3> LinphoneService定義了各種監(jiān)聽器
4> LinphoneCore主要實現(xiàn)的通信
Linphone的庫
VIDEO.SDK
mediastreamer2? 多媒體sdk用于音視頻解碼
ORTP網(wǎng)絡協(xié)議庫
exosip2為用戶的代理庫
Linphone的seeting為系統(tǒng)設置
我遇到的問題
關于操作系統(tǒng)底層的硬件結構不清楚,如何為c語言程序提供java接口泻仙、以及Android的ndk原理不清楚糕再。面對這個龐大代碼庫,可以說本人微不足道的英語水平真是捉襟見肘不夠用啊玉转,在最后吐血狀態(tài)下才編譯成現(xiàn)在這樣突想,哈哈,比較慚愧冤吨。蒿柳。饶套。