将Linphone应用集成到我的iOS应用程序中

7
在StackOverflow上有关于Linphone ios构建的大约20个问题。其中有几个问题询问如何将Linphone集成到现有的xcode项目中。我已经按照它们的要求操作了,成功地构建和运行了Linphone项目。
然而,为了集成到我的现有项目中,我已经包含了以下内容:
  • linphone-sdk/apple-darwin/includelinphone-sdk/apple-darwin/lib加入我的项目。
  • Xcode项目->构建设置->搜索路径/头文件搜索路径中添加以下行: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?如果是的话,我需要注意哪些事项?

2
你是否成功地将SDK集成到你的应用程序中了?如果是,请告诉我如何做,因为我卡在这里了!!! - M.Alatrash
我也遇到了 ortp/ortp.h 找不到的问题,请告诉我有什么解决方案。 - Kittu
2个回答

9
为了能够在Swift项目中构建和运行Linphone,我需要执行以下步骤:
  1. 使用wget下载最新的SDK: 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. 集成以下pods:

    • 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
  • 配置宏:
  • 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中添加所有的库。 然后,请确保添加以下列表:

    Pods:

    • libPods.a

    动态库:

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

    框架:(对不起,我不确定它们是否都是必需的,但这是我成功构建该库的方法)

    • 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:我更新了它们以便能够构建而没有警告或错误。

    希望有一天这能帮助某个人!


    嗨,Kevin,感谢你的指导!我已经接近让它工作了。但是在LinphoneManager.h中仍然会出现很多错误。我不确定哪些是可以安全删除的。你能分享一下你的工作项目吗?或者至少分享一下修改后能够与Swift项目一起使用的Linphone文件? - gabriel_vincent
    @Kevin,我正在尝试使用它,但出现以下错误。你能帮我解决吗? 为架构arm64未定义符号:“_libmsamr_init”,引用自:LinphoneManager.o中的-[LinphoneManager createLinphoneCore] - Ali M Irshad

    1

    请检查以下头文件搜索路径。同时设置其他链接器标志-ObjC

    enter image description here


    我已经在上面提到了这个。还有其他事情要做吗? - instaable

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接