这一次的博客主要是对于自己移植一些过程进行记录,第一次移植linphone就没有做记录,以至于在新公司的第二次移植,导致了吃了很大的亏,很多以前的坑又一次被我再一次踩了一遍,表示很郁闷!
首先向大家分享几篇对我帮助很大的文章,十分感谢
1、http://blog.csdn.net/showhilllee/article/details/42966305 一篇关于Homebrew编译linphone的文章,如果你的官方demo无法运行,可以参考一下此文章的编译方式,如果是自己移植集成,可以略过。(需要注意的是“链接host strings到模拟器SDK”)文章中给出的是链接到模拟器,如果你是真机记得切换相关目录,真机地址于模拟器目录大同小异。
2、https://www.linphone.org/snapshots/ LinPhone SDK下载源地,不做过多解释,我的SDK都是国内网站度出来的,不得不说长城防火墙,用过的都说好
3、http://blog.csdn.net/frf881128/article/details/50234479 不得不提江湖哥的文章,两次的linphone移植都给我很大的帮助,只是文章时间过老,新的ipv6移植有一些小的出处
4、http://www.linphone.org/docs/liblinphone/index.html 这是linphone的API文档,全英文,推荐给英语比较好的小伙伴
闲话少说,移植linphone其实并不是很复杂,就几个步骤,一个个来就可以了
准备工作:支持IP v6的linphone官方demo。链接: https://pan.baidu.com/s/1b7hiFW 密码: wh3a
一、导入linphone SDK文件到工程中
再次分享一下我本次使用的SDK,具体版本号我也忘记了,但是SDK的版本最少也是3.10之后,大家可以放心使用。地址在这里:链接: https://pan.baidu.com/s/1bp3X8Lp 密码: 56ru
二、Build Settings -> Other Linker Flags 中增加 -ObjC
三、添加库和框架,列表如下:
libxml2.tbd
libresolv.tbd
libstdc++.6.tbd
libc++.tbd
libsqlite3.tbd
libz.tbd
libiconv.tbd
AddressBookUI.framework
AddressBook.framework
AssetsLibrary.framework
AudioToolbox.framework
AVFoundation.framework
CFNetwork.framework
CoreAudio.framework
CoreGraphics.framework
CoreLocation.framework
CoreMedia.framework
CoreTelephony.framework
CoreVideo.framework
Foundation.framework
MessageUI.framework
MediaPlayer.framework
UIKit.framework
QuartzCore.framework
OpenGLES.framework
MobileCoreServices.framework
SystemConfiguration.framework
VideoToolBox.framework(这个是为了支持新版IPv6 SDK)
四、关于info.plist文件的相关设置:
1、关于HTTP请求的设置,iOS9之后,如果还想使用HTTP的请求就要做相关的设置。具体设置方法自行百度,这里不在复述;linphone最新版已经做了HTTPS的请求,但是因为我没有用到,我直接跳过,有兴趣的可以研究一下
2、在info.plist文件中添加Key: Required background modes,在下面添加两个项:App plays audio和App provides Voice over IP services。
3、在TARGETS-->Capabilities-->Background Modes中开启如下两项,个人感觉跟info.plist设置有点重复,但是不太清楚区别,还是老实弄上吧。
五、开始导入linphone的.a库
六、设置引用路径
到了这一步基本上就算是完成了所有的移植工作。现在就可以跑起来看一看了,个人建议使用真机来测试,最好不要在模拟器做测试,这样到后期,有的问题不好定位。