前言:
现在很多it公司都有做网络免费电话的意愿,而老牌开源项目Linphone遵从sip协议是很多猿们的首选,我也不例外。刚接触Linphone时我的状态就是懵比,一直到现在我都是处于懵比状态,但是编译之后的代码运行在可移动设备上稳定性还是挺好的,但是我司偏偏要插个网线并且还要固定ip,这对网络环境要求高的linphone不异于外来物种入侵,我是改了一个bug发现另一个bug,而且都是anr,卧擦。可是最终发现这些bug的出现都伴有一个规律,那就是外网环境不通。我遇到过设备在设定了固定ip之后,换网段anr、子网掩码设置错误anr、网关设置错anr。这些坑都一一跳过,才发现这个世界是多么美好,这是我编译的第一个开源项目,就此总结经验,希望大家多多指教。
Linphone项目结构,全部展开有一米七,我真是吐了一口老血,噗。噗。噗。:
![7077845-b202a1f98d754e8d.png](https://i-blog.csdnimg.cn/blog_migrate/617f2c23e982124d7bec521291166ac3.png)
编译后的源码 密匙:aqsj
Linphone源码编译java层主要有几个类:
LinphoneManager、LinphoneActivity、LinphoneService、LinphoneCore、LinphoneUtil等,为了不受影响,包名还是org.linphone不要动。
1> LinphoneManager 操作包,初始化以及各状态的实现
2> LinphoneActivity为主界面
3> LinphoneService定义了各种监听器
4> LinphoneCore主要实现的通信
Linphone的库
VIDEO.SDK
mediastreamer2 多媒体sdk用于音视频解码
ORTP网络协议库
exosip2为用户的代理库
Linphone的seeting为系统设置
我遇到的问题
关于操作系统底层的硬件结构不清楚,如何为c语言程序提供java接口、以及Android的ndk原理不清楚。面对这个庞大代码库,可以说本人微不足道的英语水平真是捉襟见肘不够用啊,在最后吐血状态下才编译成现在这样,哈哈,比较惭愧。。。