1

我想合并两个项目。

第一个项目

  1. 用 Objective C 和 swift 2.3 编写
  2. Pod 依赖项
  3. 有不同的目标
  4. 子模块依赖

第二个项目

https://github.com/BelledonneCommunications/linphone

  1. 用目标 C 编写
  2. 依赖于用 C 编写的 linphone SDK
  3. 子模块依赖

如何将第二个项目(linphone)转换为框架?

编辑 1

我已经集成了 linphone 项目(第二个项目),包括 C 编写的 linphone SDK 并纠正了所有编译时错误。现在我可以运行该项目了。但是我将为子模块依赖项做什么?

编辑 2

按照现在,使用我们自己的 SIP 服务器帐户成功登录。现在我的问题是

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

theLinphoneCore 为 NULL,为什么?

注意:我仍然没有集成子模块,但我可以进行音频和视频通话,一切正常。

4

1 回答 1

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/apple-darwin/lib 中的库添加到 XCode 的常规下的链接框架和库部分。单击 +,选择“添加其他”,导航到 libs 目录。不要忘记在 liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins 中包含任何内容
  4. 您可能需要为标题搜索路径添加构建设置 $(SRCROOT)/liblinphone-sdk/apple-darwin/include
  5. 您可能需要为库搜索路径添加构建设置$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib
  6. linphone-iPhone 的 XCode 项目是发现您可能需要进行的其他调整的好地方。

设置您的工作区可能需要反复试验。Xcode 对错误的处理不是很好,但您应该能够使用 Report Navigator 视图查看完整的构建日志和错误消息。例如,如果您有一个未定义的符号,您可以尝试grep -ri SYMBOLNAME liblinphone-sdk找出可能缺少的库。

关于您的EDIT 2问题,您需要所有子模块,否则它将不起作用。ortp、belle-sip、mediastreamer、srtp、mbedtls,它们都是必不可少的。只有 mediastreamer 插件编解码器(在某种程度上)是可选的。

于 2017-06-06T18:10:25.090 回答