【问题标题】:Integrate Linphone app to my iOS app将 Linphone 应用程序集成到我的 iOS 应用程序
【发布时间】:2013-08-06 13:09:12
【问题描述】:

StackOverflow 中有大约 20 个关于 Linphone ios 构建的问题。他们中的一些人询问如何将 Linphone 集成到现有的 xcode 项目中。我都跟着他们了。我能够成功构建和运行 Linphone 项目。

但是,为了集成到我现有的项目中,我已经包括:

  • linphone-sdk/apple-darwin/include 和 linphone-sdk/apple-darwin/lib 到我的项目中。
  • Xcode 项目->Build Settings->Search Path/Header Search Path 的以下行: submodules/linphone/coreapi submodules/linphone/mediastreamer2/include submodules/linphone/mediastreamer2/include submodules/linphone/oRTP/include submodules/externals/gsm/ submodules/externals/osip/include submodules/externals/exosip/include submodules/externals/speex/include Classes/Utils/NinePatch/Classes/Utils /XMLRPC/
  • 将所有具有目标成员身份的 .a 标记为我当前的目标

我还应该怎么做才能让 Linphone 在我的项目中工作?或者我应该制作一个 Linphone 的静态库?如果是,我应该注意什么?

【问题讨论】:

  • 您是否成功将 SDK 与您的应用集成?如果是这样,请告诉我为什么我被困住了!!!
  • 我也找不到 ortp/ortp.h。请告诉我任何解决方案。

标签: iphone ios objective-c sip linphone


【解决方案1】:

为了能够在 Swift 项目上构建和运行 Linphone,我必须执行以下步骤:

  1. 从以下位置下载最新的 SDK(带 wget): http://www.linphone.org/snapshots/ios/liblinphone-iphone-sdk-latest.zip

  2. 复制、粘贴并插入到项目中:

    • liblinphone-sdk/apple-darwin/include
    • liblinphone-sdk/apple-darwin/lib
    • liblinphone-sdk/apple-darwin/share/images
    • liblinphone-sdk/apple-darwin/share/sounds
  3. 使用以下命令创建 Bridging-Header.h:

    • #import <Foundation/Foundation.h>
    • #import <UIKit/UIKit.h>
    • #import <linphone/linphonecore.h>
  4. 创建一个 PrefixHeader.pch 来导入您的 Bridging-Header:

    • #import "Bridging-Header.h"
  5. 集成以下 pod:

    • pod 'xmlrpc', '~> 2.3.4'
    • pod 'Tortuga22-NinePatch', '~> 0.1.1'
  6. 配置构建设置:

`

GCC_PRECOMPILE_PREFIX_HEADER = YES
GCC_PREFIX_HEADER = path/to/PrefixHeader.pch
OTHER_LDFLAGS = -ObjC $(inherited)
FRAMEWORK_SEARCH_PATHS = $(inherited)
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Headers/Public $(PROJECT_DIR)/External/liblinphone-sdk/apple-darwin/include
LIBRARY_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)/External/liblinphone-sdk/apple-darwin/lib $(PROJECT_DIR)/External/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins

`

  1. 配置宏:

`

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) HAVE_OPENH264 HAVE_SILK HAVE_SSL
OTHER_SWIFT_FLAGS = $(inherited) -D HAVE_OPENH264 -D HAVE_SILK -D HAVE_SSL

`

  1. 库和框架:

首先添加文件夹(和子文件夹)liblinphone-sdk/apple-darwin/lib 中的所有库。 然后一定要添加以下列表:

豆荚:

  • libPods.a

动态库:

  • libz.dylib
  • libiconv.dylib
  • libxml2.dylib
  • libsqlite3.dylib
  • libc++.dylib
  • libstdc++.6.dylib
  • libresolv.dylib

框架:(抱歉,我不确定它们是否都是 100% 需要的,但这就是我设法构建 lib 的方式)

  • AudioToolbox.framework
  • UIKit.framework
  • QuartzCore.framework
  • OpenGLES.framework
  • MessageUI.framework
  • MediaPlayer.framework
  • CoreGraphics.framework
  • MobileCoreServices.framework
  • AddressBookUI.framework
  • AddressBook.framework
  • SystemConfiguration.framework
  • CFNetwork.framework
  • AssetsLibrary.framework
  • AVFoundation.framework
  • CoreAudio.framework
  • CoreMedia.framework
  • CoreTelephony.framework
  • CoreVideo.framework
  • Foundation.framework
  • CoreLocation.framework

如何测试:

为了验证它是否正常工作,我从 Linphone 应用程序中集成了一些示例代码,并在我的视图控制器中进行了一些小的设置。 为此,我在项目中集成了以下类:

  • Utils.[h, m]
  • LinphoneManager.[h, m]
  • LinphoneCoreSettingsStore.[h, m]
  • FastAddressBook.[h, m]
  • LinphoneIOSVersion.h
  • pod 'InAppSettingsKit', '~> 2.6'

PS:我必须更新它们才能在没有警告或错误的情况下构建。

我希望有一天这会对某人有所帮助!

【讨论】:

  • 嗨,凯文,感谢您的指导!我快让它工作了。但我仍然在LinphoneManager.h 中遇到很多错误。我不确定删除什么是安全的。你能分享你的工作项目吗?或者至少修改了 Linphone 文件以便与 Swift 项目一起使用?
  • @Kevin 我正在尝试使用它,但出现以下错误。你能帮我吗。架构 arm64 的未定义符号:“_libmsamr_init”,引用自:-[LinphoneManager createLinphoneCore] in LinphoneManager.o "
【解决方案2】:

检查下面的标题搜索路径。同时设置Other Linker Flags -ObjC

【讨论】:

  • 我已经在上面提到了这一点。还有什么事情要做吗?
猜你喜欢
  • 2017-10-02
  • 2017-06-01
  • 2014-11-02
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多