2017-05-30 96 views
1

我想合并两个项目。将包含C和子模块的Objective-C项目(linphone)作为框架或静态库转换?

第一个项目写在目标C

  1. 和SWIFT 2.3
  2. 波德相依
  3. 有不同的目标
  4. 子模块依赖

第二个项目

https://github.com/BelledonneCommunications/linphone

  1. 用Objective C对Linphone中SDK
  2. 依赖C语言编写的
  3. 子模块依赖

我如何转换第二个项目(Linphone中)作为一个框架?

编辑1

我已经集成Linphone中的项目(二期工程),包括C 书面Linphone中SDK和整改的所有编译时错误。现在我能够运行该项目。但是我会为子模块依赖项做些什么?

EDIT 2

按目前,成功登录与我们自己的SIP服务器帐户。右 现在我的问题是

LinphoneManager 
- (void)createLinphoneCore 
- theLinphoneCore = linphone_core_new_with_config(&linphonec_vtable, _configDb, (__bridge void *)(self)); 

theLinphoneCore是NULL,为什么呢?

注意:我仍然没有整合子模块,但我可以做音频&视频通话一切正常。

回答

3

建立一个完整的liblinphone SDK的唯一方法是通过合适的客户端存储库, linphone-iphone或linphone-android。正如你已经发现,可以利用来构建一个框架或静态库:

./prepare.py -c && ./prepare.py -DENABLE_STATIC_ONLY=ON && make && make zipsdk

设置DENABLE_STATIC_ONLY = ON的库,和= OFF为一个框架:

注意:为2017年6月,框架配置仍在开发中。它在模拟器和实际硬件上构建并运行,但由于子框架配置不正确,导致产生的应用程序二进制文件无法提交给Apple。如果你不需要提交(甚至TestFlight!)2-6个月,他们可能会很快完成。

如果您需要更快的功能产品,请使用静态库配置。唯一棘手的部分是在您的项目/工作区中设置一切。

  1. 做一次全面清理,并建立使用prepare.py如上
  2. 解压SDK zip文件到自己的项目目录liblinphone-SDK
  3. 添加库中liblinphone-SDK /苹果达尔文/ lib到General中的XCode的链接框架和库部分。点击+,选择“添加其他”,导航到libs目录。不要忘记,包括liblinphone-SDK /苹果达尔文/ lib目录/ mediastreamer /插件的任何
  4. 您可能需要添加一个Build设置标题搜索路径$(SRCROOT)/liblinphone-sdk/apple-darwin/include
  5. 您可能需要添加一个Build设置图书馆搜索路径$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib
  6. linphone-iPhone的XCode项目是发现你可能需要做的其他调整的好地方。

设置您的工作空间可能需要反复试验。 Xcode对错误并不好,但你应该可以使用Report Navigator视图来查看完整的构建日志和错误消息。例如,如果您有未定义的符号,则可以尝试grep -ri SYMBOLNAME liblinphone-sdk来确定可能缺失的库。

关于你的编辑2问题,你需要所有的子模块或它不会工作。 ortp,belle-sip,mediastreamer,srtp,mbedtls,它们都是必不可少的。只有mediastreamer插件编解码器(有些)是可选的。

+0

非常感谢您的回复。关于编辑2,我为我现有的项目提供了子模块。如果我复制粘贴到整个文件,它的工作?我的意思是来自linphone项目的submodules文件夹到我现有项目的子模块文件夹中的所有文件。 –

+0

对于linphone,Xcode不列出任何子模块。对于其他项目,我可以在“Development Pods”组下的Xcode中看到子模块的内容。在我的情况下,我可以将linphone子模块拖入当前项目的Xcode中吗? –

+1

在您制作zipsdk_并在我的答案的第3步中添加静态库之后,您将将所有Linphone子模块链接到您的应用中。您不需要将Linphone的子模块直接集成到您的源代码中,也不需要将它们与cocoapods集成 - 所有内容都是预先构建的,并通过_liblinphone-sdk_子目录包含在内。如果你需要调试linphone代码,你也可以在调试时编译它。 prepare.py有很多选项。 –

相关问题