最新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这些不需要, 如下图:
拷贝SDK.png

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

Link Binary.png
Add other.png
选上Framework.png

3.设置一下Header Search Paths:

Header Search Paths.png

设置为include文件的目录:

$(SRCROOT)/liblinphone-sdk/apple-darwin/include
设置一下Header Search Paths.png

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

QQ20170930-091439.png

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


点击"+"

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

添加完之后效果图

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


#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif

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

QQ20170930-101421.png

可以成功开启core.

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

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

Finder里面拷贝粘贴
用Add Files进行添加
添加进工程

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


放到工程根目录下.png

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


设置脚本路径.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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容