最新linphone-iOS(Framework)移植流程

linphone官网.png

2019/8/26更新,更新几点东西:

1.此教程可能已经过时,距离这篇的起稿已经过去了两年,很多东西都已经更改,同时由于本人也在研究其他方向,本教程将不再维护
2.关于QQ群聊,有不懂的地方可以加群讨论,为了更高效的提问,请学习提问的智慧
3.本人已转移博客到自行搭建的博客平台,对音视频(webrtc)感兴趣的同学, 欢迎收藏订阅,这是链接

一 . 编译

具体编译过程可参考我之前的文章:快速移植Linphone到自己的项目, 当然如果不想花费那么多时间编译下载子模块的, 可以到百度网盘进行下载, 提供两种方式的SDK:

  1. .a形式的SDK, 就是老版的打包方式,链接:https://pan.baidu.com/s/1bplNAMz 密码:qmm8
    2.Framework形式的SDK, 就是最新使用的打包方式,链接: https://pan.baidu.com/s/1gfth80z 密码: 58bp
    今天我们要讲的是第二种方式的移植, 可以先看一下官网的教程:

After the SDK has been built, add all the .framework files located in liblinphone-sdk/apple-darwin/Frameworks to your XCode project Embedded Frameworks. Add a Run Script step to your build steps, put it after your step to embed frameworks, set it to use our deploy.sh script located in liblinphone-sdk/apple-darwin/Tools.

官网写的比较简洁, 大意就是把SDK拖入工程里面, 然后添加个脚本, 就完事了. 但事实并不是这么简单, 还需要做一些额外的设置才行. 接下来是我们的移植过程

二 . 移植

  1. 下载完Framework版本的SDK后, 先把SDK拷贝到跟项目同一目录下, 我们只需要用到liblinphone-sdk下的apple-darwin这个文件夹即可, 其他的不需要x86_64这些不需要, 如下图:
最新linphone-iOS(Framework)移植流程_第1张图片
拷贝SDK.png

2.链接一下Framework, Build Phases->Link Binary With Libraries, add + :

最新linphone-iOS(Framework)移植流程_第2张图片
Link Binary.png
最新linphone-iOS(Framework)移植流程_第3张图片
Add other.png
最新linphone-iOS(Framework)移植流程_第4张图片
选上Framework.png

3.设置一下Header Search Paths:

Header Search Paths.png

设置为include文件的目录:

$(SRCROOT)/liblinphone-sdk/apple-darwin/include
最新linphone-iOS(Framework)移植流程_第5张图片
设置一下Header Search Paths.png

4.运行一下, 看下能否编译运行, 出现以下结果:

最新linphone-iOS(Framework)移植流程_第6张图片
QQ20170930-091439.png

嗯... 看来还没配置完成.如果出现image not found, 则需要第五步
5.添加embedded Framework


最新linphone-iOS(Framework)移植流程_第7张图片
点击"+"

把Frameworks下的所有都选上, 上图不是指添加一个而是添加所有(截图有点问题)

最新linphone-iOS(Framework)移植流程_第8张图片
添加完之后效果图

6.再运行一下,没有任何报错, good job.
7.设置pch文件
如果项目本身已经有了pch文件, 则不需重复添加pch, 而没有pch文件的, 则需要添加一下, 具体教程可百度之. 然后在pch添加以下代码, 目的主要是, SDK里面引用了Cocoa里面的一些框架但没引用相关头文件, 不全局添加Foundation跟UIKit会报错.


#ifdef __OBJC__
#import 
#import 
#endif

8.添加一下linphonemanager的头文件, 本人已从linphone-demo抽离单独的linphonemanager, 具体请点击github链接. 然后开启linphone-core:

最新linphone-iOS(Framework)移植流程_第9张图片
QQ20170930-101421.png

可以成功开启core.

在这里解释一下, LinphoneManager这个文件主要封装了开启核心, 进行一些基本的初始化设置, 还有处理一些定时器的事件等. 由于官方demo的LinphoneManager绑定了demo其他的一些功能业务, 所以需要我们进行抽离. 而SMLinphoneConfig这个文件则是本人封装了些注册方法, 还有打电话方法, 可直接注册注册还有打电话.

9.添加一些额外的设置
首先在Finder中, 把Resources跟Tools两个文件夹拷贝到工程目录下, 然后用下面的方法(Add Files to)添加进项目根目录里面, 根目录里面, 根目录里面, 重要的事情说三遍, 添加Linphone官方Demo的两个文件夹:

Finder里面拷贝粘贴
最新linphone-iOS(Framework)移植流程_第10张图片
用Add Files进行添加
最新linphone-iOS(Framework)移植流程_第11张图片
添加进工程

Resources文件里面包含一些配置文件, Tools包含一些脚本配置文件.


放到工程根目录下.png

1)添加对Framework进行瘦身的脚本, 主要作用就是在上架的时候, 去掉SDK包里面的不需要的x86_64框架, 目前集成过程中可选. 在上架的时候, 可自己手动去除, 搜索lipo -remove命令即可.


最新linphone-iOS(Framework)移植流程_第12张图片
设置脚本路径.png

2)设置资源文件
QQ20170930-103554.png

linphonerc以及linphonerc-factory为系统默认的一些参数配置文件, 开发者可以直接对一些参数进行修改, 如linphonerc下的:

解释一下: linphonerc里面的配置是持久化配置, 就是说在第一次安装APP之后起效, 换句话说, APP已经安装了一次之后, 以后在xcode改了这个文件配置之后, 然后再运行, 是不会起效的. 如果想要即时起效, 需要修改linphonerc-factory这个文件, 如果想要linphonrc这个文件起效, 需要卸载重装才能起效, 这点要注意下.

[sound]
capture_dev_id=AU: Audio Unit Receiver
eq_active=0
playback_dev_id=AU: Audio Unit Receiver

[video]
automatically_accept=1
automatically_initiate=1
capture=1
display=1
enabled=1
show_local=0
size=qvga

具体参数意义可以参考linphone-demo的相关页面, 在此不展开说明.
另外一些sounds文件可以替换为自家的音频文件.
开启核心的时候, 如果控制台出现以下错误, "Can't find "(null)":", 说明linphone没找linphonerc的这个配置文件, 重新检查第10步有没有正确导入两个资源文件.

"Can't find "(null)":"

三 . 一些链接:

linphonemanager精简文件可到GitHub下载, 下载地址
demo可加群下载, 欢迎交流讨论, QQ群号: 578410849
10.17日补充, 完整linphone-demo, 可直接编译版本, 版本号:3.16.5,百度网盘
链接: https://pan.baidu.com/s/1bo7nGCZ 密码: uju9
MD5: 75023f5c0f31beb3f3e7617d5b79018b
11.13更新补充, 发现那个瘦身脚本在打包的时候不起作用, 不知是什么原因, 就是在打包过程中, 会报错. 间接处理方式就是使用lipo -remove命令对SDK进行瘦身, 去除x86_64这个架构. 如网友遇到相同的问题, 并且有好的解决方法, 留下您的宝贵意见. 感谢

End

你可能感兴趣的:(最新linphone-iOS(Framework)移植流程)