最近項(xiàng)目里用到了Linphone,但沒(méi)想到在編譯官方demo時(shí)就遇到了一些問(wèn)題,所以想著記錄一下,也想讓以后要接入Linphone的iOS開發(fā)們少踩些坑。
著急看怎么編譯demo的可以跳過(guò)下面這段。
簡(jiǎn)單了解下Linphone。
根據(jù)官網(wǎng)介紹:
Linphone是一款始于2001年的開源的IP語(yǔ)音電話(或稱SIP電話),它可以讓人們?cè)诨ヂ?lián)網(wǎng)上實(shí)現(xiàn)語(yǔ)音、視頻和即時(shí)信息的自由交流,并可以移植到各大主流平臺(tái)(Windows/Android/iOS/Win phone 8/10等)上。Linphone使用SIP協(xié)議,可以與任何SIP VoIP運(yùn)營(yíng)商一起使用,包括我們的免費(fèi)SIP音頻/視頻服務(wù)。
那什么是SIP協(xié)議?資深面向百度開發(fā)者告訴你:
SIP(Session Initiation Protocol)是一個(gè)應(yīng)用層的信令控制協(xié)議。用于創(chuàng)建、修改和釋放一個(gè)或多個(gè)參與者的會(huì)話。這些會(huì)話可以是Internet、IP電話或多媒體分發(fā)。會(huì)話的參與者可以通過(guò)組播(multicast)、網(wǎng)狀單播(unicast)或兩者的混合體進(jìn)行通信。
接下來(lái)進(jìn)入我們的主題,編譯官方demo并在手機(jī)上跑起來(lái)
1.首先從github上下載一個(gè)linphone-iphone工程。
命令行進(jìn)入到要保存的目錄后執(zhí)行:
git clone git://git.linphone.org/linphone-iphone.git --recursive
下載下來(lái)后我們會(huì)發(fā)現(xiàn)內(nèi)容非常多,這個(gè)時(shí)候不用著急打開linphone.xcodeproj文件,因?yàn)榇蜷_了也會(huì)報(bào)一堆錯(cuò)誤,運(yùn)行不了。
按工程內(nèi)README中介紹,我們要進(jìn)行以下步驟先構(gòu)建出SDK。
2.安裝Homebrew
安裝前你可以先在命令行輸入brew -v檢查一下是否安裝過(guò)了,出現(xiàn)版本號(hào)就證明電腦已經(jīng)裝好了。
在命令行執(zhí)行:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
輸入密碼后等待安裝完成
Homebrew官網(wǎng)鏈接

3.安裝Linphone的依賴項(xiàng)。
命令行cd到linphone-iphone demo文件夾中,執(zhí)行
./prepare.py
這一步我遇到了命令行報(bào)錯(cuò),如果沒(méi)有遇到該錯(cuò)誤請(qǐng)?zhí)较乱徊?/strong>,根據(jù)他的提示來(lái)操作就行了:

命令行執(zhí)行
brew install imagemagick doxygen cmake intltool yasm automake coreutils wget optipng autoconf nasm后重新執(zhí)行
./prepare.py
4.配置環(huán)境路徑。
命令行執(zhí)行
export PATH=/usr/local/bin:$PATH
5.構(gòu)建SDK。
命令行執(zhí)行
./prepare.py -c && ./prepare.py && make
這一步大概要耗時(shí)二三十分鐘,耐心等待吧!
SDK將生成在項(xiàng)目根目錄中的liblinphone-sdk/apple-darwin/文件夾內(nèi),構(gòu)建完成后打開項(xiàng)目就可以編譯運(yùn)行在手機(jī)上了。
可能遇到的問(wèn)題:
1.證書中包含App-Group和推送,換bundleID后無(wú)法運(yùn)行。
筆者先把工程文件-targets-Capabilities中的App-Group和推送功能關(guān)掉了,之后就解決了證書問(wèn)題,不影響linphone核心功能的使用。
2.linker command failed with exit code 1 (use -v to see invocation)報(bào)錯(cuò)

解決方法:工程文件 - linphone(targets) - Build Phases - Link Binary With Libraries中添加StoreKit.framework后重新編譯

OK,編譯運(yùn)行SDK就寫到這,后續(xù)如果公司確定使用linphone SDK,我再寫一篇關(guān)于linphone api的介紹,感謝觀看~