iOS - 工程引入doubango (idoubs编译)

来源:互联网 发布:node path resolve 编辑:程序博客网 时间:2024/03/29 12:32

首先声明一点 本篇不是原创 只是添油加醋 真正的作者是我的同事老师
粘上他的博客文章地址:
陈老师–idoubs编译笔记

准备工作:下载doubango、idoubs源码

mkdir mydoubs
cd mydoubs
git clone https://github.com/DoubangoTelecom/doubango.git doubango
git clone https://github.com/DoubangoTelecom/idoubs.git idoubs

构建demo应用
1.创建一个文件夹MyPropertyManage(自己随便命名) 在MyPropertyManage的文件夹下要有两个平级文件夹
因为在idoubs里面的路径被写好啦(下面会说到),在MyPropertyManage文件夹里拖入doubango框架,
另外一个文件夹命名你开心就好(此处写了idoubs),这个文件夹是用来装你的工程的!
文件目录

2.从源码idoubs里面将ios-ngn-stack整个文件以及common-ngn-stack这个文件夹拖入自己的工程文件下,
这里面包含着doubango的整个工程,所以这个文件夹很重要

3.在idoubs文件夹下将自己刚刚建好的Demo工程(此处命名ios-idoubs)拖入,与ios-ngn-stack平级,
平级很重要,关乎工程内路径引入的问题!!
现在目录结构大概是这样的
目录

4.打开自己的工程demo 将ios-ngn-stack添加为项目引用
点击
或者:关闭XCode打开的其他项目,只保留当前的demo项目。 将ios-ngn-stack.xcodeproj从finder中拖放到demo项目内。

添加完成后

5.添加链接库
在demo项目的Build Phases中,在Link Binary With Libraries里添加各种需要的内容。
添加链接库

libios_ngn_stack.a
libtinyBFCP.a
libtinySAK.a
libtinyNET.a
libtinySDP.a
libtinyRTP.a
libtinyIPSec.a
libtinyMSRP.a
libtinyHTTP.a
libtinyMEDIA.a
libtinySIGCOMP.a
libtinySMS.a
libtinyXCAP.a
libtinySIP.a
libtinyDAV.a
libtinyWRAP.a
QuartzCore.framework
OpenGLES.framework
Security.framework
CFNetwork.framework
AudioToolbox.framework
AddressBook.framework
CoreGraphics.framework
AVFoundation.framework
CoreMedia.framework
CoreVideo.framework
SystemConfiguration.framework
AddressBook.framework
libsqlite3.tbd
libresolv.tbd

6.配置Build Settings
①User-Defined
User-Defined

DOUBANGO_HOME       ../../doubangoDOUBANGO_LIBS       $DOUBANGO_HOME/thirdparties/iphone/lib/universalNGN_STACK_HOME      $DOUBANGO_HOME/thirdparties/iphone/lib/universalPREBINDING          NO

②Linking/Other Linker Flags
Linking/Other Linker Flags

-lsrtp -lssl -lcrypto -lyuv -lvpx -lx264 -lopenh264 -lswscale -lavutil -lavcodec -lopus -lgsm -lg729b -lspeex -lspeexdsp -framework Foundation -framework UIKit

③Search Paths/Header Search Paths
Search Paths/Header Search Paths

 $NGN_STACK_HOME/common-ngn-stack  $NGN_STACK_HOME/ios-ngn-stack  $DOUBANGO_HOME/bindings/_common $DOUBANGO_HOME/tinySMS/include $DOUBANGO_HOME/tinyHTTP/include $DOUBANGO_HOME/tinySIP/include $DOUBANGO/HOME/tinyMSRP/include $DOUBANGO_HOME/tinyMEDIA/include $DOUBANGO_HOME/tinyNET/src $DOUBANGO_HOME/tinySAK/src $DOUBANGO_HOME/tinyDAV/include $DOUBANGO_HOME/thirdparties/common/include$DOUBANGO_HOME/tinySDP/include ../common-ngn-stack ../ios-ngn-stack

④Search Paths/Library Search Paths
Search Paths/Library Search Paths

 $(inherited)  $DOUBANGO_LIBS

⑤Apple LLVM 7.1 - Custom Compiler Flags / Other C Flags
Apple LLVM 7.1 - Custom Compiler Flags / Other C Flags

 -DNS_BLOCK_ASSERTIONS=1

⑥Build Settings / Apple LLVM 7.1 - Language 下的Compile Sources As为Objective-C++
这里写图片描述

⑦ 将Enable Bitcode 设置为NO
⑧加入头文件
在ViewController.h中,加入头文件

import “iOSNgnStack.h”

此外注意点:
当你们创建的控制器只要用到ios-ngn-stack里面的东西的话,控制器的后缀一定要改成.mm好吗 让它们混编好吗 宝宝们

因为如果你不这么做的话 编译会变成这样的错误:
错误

最后,谢谢我的同事陈老师!

补充:
有网上的朋友配置的时候出现这样的问题:
问题1:
这里写图片描述
解决:
这个问题出现在没按配置把doubango放在最外层 详细看第一步骤

问题2:
问题2

解决:
这个问题就是没有配置Linking/Other Linker Flags 详细翻到上面寻找。

2 0