一 . 編譯
具體編譯過程可參考我之前的文章:快速移植Linphone到自己的項目, 當然如果不想花費那么多時間編譯下載子模塊的, 可以到百度網盤進行下載, 提供兩種方式的SDK:
- .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拖入工程里面, 然后添加個腳本, 就完事了. 但事實並不是這么簡單, 還需要做一些額外的設置才行. 接下來是我們的移植過程
二 . 移植
- 下載完Framework版本的SDK后, 先把SDK拷貝到跟項目同一目錄下, 我們只需要用到liblinphone-sdk下的apple-darwin這個文件夾即可, 其他的不需要x86_64這些不需要, 如下圖:


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






3.設置一下Header Search Paths:


設置為include文件的目錄:
$(SRCROOT)/liblinphone-sdk/apple-darwin/include


4.運行一下, 看下能否編譯運行, 出現以下結果:


嗯... 看來還沒配置完成.如果出現image not found, 則需要第五步
5.添加embedded Framework






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:


可以成功開啟core.
在這里解釋一下, LinphoneManager這個文件主要封裝了開啟核心, 進行一些基本的初始化設置, 還有處理一些定時器的事件等. 由於官方demo的LinphoneManager綁定了demo其他的一些功能業務, 所以需要我們進行抽離. 而SMLinphoneConfig這個文件則是本人封裝了些注冊方法, 還有打電話方法, 可直接注冊注冊還有打電話.
9.添加一些額外的設置
首先在Finder中, 把Resources跟Tools兩個文件夾拷貝到工程目錄下, 然后用下面的方法(Add Files to)添加進項目根目錄里面, 根目錄里面, 根目錄里面, 重要的事情說三遍, 添加Linphone官方Demo的兩個文件夾:






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


1)添加對Framework進行瘦身的腳本, 主要作用就是在上架的時候, 去掉SDK包里面的不需要的x86_64框架, 目前集成過程中可選. 在上架的時候, 可自己手動去除, 搜索lipo -remove命令即可.


2)設置資源文件


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步有沒有正確導入兩個資源文件.

. 一些鏈接:
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這個架構. 如網友遇到相同的問題, 並且有好的解決方法, 留下您的寶貴意見. 感謝