将 Linphone 集成到自己的 iOS 项目中
Integrate Linphone in own iOS project
我正在使用 Linphone 创建一个基于 voip 呼叫的项目,我也已成功构建和 运行 Linphone 项目并成功 运行 音频和视频呼叫。现在我正在将 Linphone 集成到我自己的项目中,我面临着很多问题。我使用了以下一些链接来寻求帮助,但没有完整的说明。谁能为我提供完整的 运行ning 步骤-
http://shallwelearn.com/blog/build-linphone-for-iphone-and-ipad/
Integrate Linphone app to my iOS app
How to integrate Linphone into an existing project (SIP in IOS)
http://www.linphone.org/technical-corner/linphone/overview
How to integrate Linphone into an existing project (SIP in IOS)
http://lists.gnu.org/archive/html/linphone-developers/2014-09/msg00109.html
http://www.successmonkey.co.nz/blog/building-linphone-for-ios
- 从 link 下载 Liblinphone iPhone SDK:http://www.linphone.org/releases/ios 选择最新的。
- 将两个文件夹(include 和 lib)移动到您的项目文件夹
- 在项目中添加这些文件夹的路径 构建设置 - INCLUDE 文件夹转到 headers,LIB 文件夹转到 图书馆.
- 在常规选项卡中链接框架添加LIB文件夹中的所有文件
- Download/clone 回购 https://github.com/BelledonneCommunications/linphone-iphone
- 找到4个文件:LinphoneManager.h/.m和Utils.h/.m,将它们包含在您的项目文件夹并将它们添加到左侧窗格中的其他 class 文件也
- 尝试编译您的项目 - xCode 会向您发送错误消息 - 没关系。
- 您需要检查错误并删除所有导致错误的文件导入(一些 Linphone 通讯簿文件/一些配置存储文件和一些您 不需要的助手 class在您的项目中使用(因为很可能您已经在现有项目中实现了此功能))
- 然后再次编译并检查方法中的所有错误。评论删除任何有问题的代码块(大约有 10-15 个)。
LinphoneManager class 已经包含许多有用的功能 - 例如良好的监视和使用 linphone 核心以及良好的日志记录等等,但不是全部(不幸的是)。
使用 Xcode 11 使用 macos 10.15.6 Catalina
Linphone SDK 4.4.0 使用 Cocoapod
https://github.com/BelledonneCommunications/linphone-sdk/blob/master/README.md
使用本地linphone SDK
从 gitlab 克隆 linphone-sdk 存储库:
$ git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git --recursive
$ git submodule update --init --recursive
或
$ git clone --recurse-submodules https://gitlab.linphone.org/BC/public/linphone-sdk.git
重建项目:
PODFILE_PATH= pod 安装
linphone-sdk 项目的构建目录在哪里,其中包含 linphone-sdk.podspec 文件和包含构建框架和资源的 linphone-sdk 输出目录。
Pod 文件看起来像
source "https://gitlab.linphone.org/BC/public/podspec.git"
source "https://github.com/CocoaPods/Specs.git"
def common_pods
use_frameworks!
pod 'linphone-sdk', '4.4.0'
end
然后用 Xcode 打开 linphone.xcworkspace 来构建和 运行 应用程序。
Linphone SDK 4.4.0 使用编译
$ git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git -- recursive
$ git submodule update --init --recursive
或
$ git clone --recurse-submodules https://gitlab.linphone.org/BC/public/linphone-sdk.git
转到构建目录
$ mkdir build && cd build
————————————
https://gitlab.linphone.org/BC/public/linphone-cmake-builder/blob/ios-3.13.19/README.python.md
首先,安装 brew
$ brew install cmake
$ brew install yasm
$ brew install pkg-config
安装 pip ->
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py
$ python -m pip install pystache //Check by $ python -m pip list
$ brew install doxygen
————————————
$ cmake .. -G Xcode -DLINPHONESDK_PLATFORM=IOS -DENABLE_G729=YES -DENABLE_G729B_CNG=YES -DENABLE_VCARD=OFF -DENABLE_ILBC=OFF -DENABLE_SILK=OFF -DENABLE_ISAC=OFF -DENABLE_MKV=OFF -DENABLE_GSM=OFF -DENABLE_DOC=OFF -DENABLE_UNIT_TESTS=OFF -DENABLE_LIME=OFF -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_NON_FREE_CODECS=OFF
注意 - 在此步骤中,我们还将在我们的 linphone sdk 中启用 G729 dedec 支持。
$ cmake --build . --config RelWithDebInfo
编译过程完成现在需要与Xcode
集成
编译好的Linphone SDK集成到Xcode.
在下面的目录中找到编译好的sdk
linphone-sdk -> 构建 -> linphone-sdk -> apple-darwin
- 框架和共享文件夹添加到xcode项目中,框架有多个通用架构。
- 框架路径添加到构建设置中的框架搜索
- Frameworks 文件夹的每个框架,在添加到 Xcode 框架设置时,应键入“嵌入并签名”(表示嵌入框架。)而不是默认的“不嵌入”。这是最重要的部分。
- apple-darwin -> 工具文件夹有 deply.sh 脚本,复制其内容并在“构建设置”中创建一个新的 运行 脚本并粘贴到其中
- 棘手的部分是将第 4 个点的脚本放置在何处,以便使用带条带和切片的存档上传应用程序。编辑方案 -> 存档 -> 打开下拉菜单 -> post 操作 -> + 添加新脚本 -> 复制和粘贴。
6(可选)。如果遇到脚本由于 fat 库使用我们的项目而导致应用程序崩溃,脚本中有一个小的变化,我从这个 URL -
中找到了解决方案
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
# Start of Script modify - identify if the framework is FAT. If it is, then it skips it.
if [ ! -f "${FRAMEWORK_EXECUTABLE_PATH}" ]; then
continue
fi
if xcrun lipo -info "${FRAMEWORK_EXECUTABLE_PATH}" | grep --silent "Non-fat"; then
echo "Framework non-fat, skipping: $FRAMEWORK_EXECUTABLE_NAME"
continue
fi
echo "Thinning framework $FRAMEWORK_EXECUTABLE_NAME"
# end of Script modify
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
- 如果您正在使用 pod,则在您的 pod 目录中使用终端命令“pod deintegrate”取消集成 pod。同时从项目中删除 .xcworkspace 文件。
- 现在使用终端命令“pod install”安装 pod
注意:如果您的情况是我在第 6 点中提到的添加脚本导致应用程序崩溃,但每次添加脚本时,都必须 pod de integrate 帮助我避免它。
:) 现在享受在您的项目中使用 linphone sdk 吧。
linphone sdk 结束
我们项目中的 Linphone SDK 配置。
- 启用编解码器 - 要启用音频编解码器,首先在 Audio.plist 文件中启用 g729_preference 的默认值,最后一步在项目 -> 目标 -> 构建设置中找到“预处理器宏”并包含 HAVE_G729,它在 sip 日志中打印,如 Adding G729/8000 为了兼容性,以防万一。
#Update - 添加第 5 个编译点,用于将应用程序上传到应用程序商店和 G729 编解码器配置。
我正在使用 Linphone 创建一个基于 voip 呼叫的项目,我也已成功构建和 运行 Linphone 项目并成功 运行 音频和视频呼叫。现在我正在将 Linphone 集成到我自己的项目中,我面临着很多问题。我使用了以下一些链接来寻求帮助,但没有完整的说明。谁能为我提供完整的 运行ning 步骤-
http://shallwelearn.com/blog/build-linphone-for-iphone-and-ipad/
Integrate Linphone app to my iOS app
How to integrate Linphone into an existing project (SIP in IOS)
http://www.linphone.org/technical-corner/linphone/overview
How to integrate Linphone into an existing project (SIP in IOS)
http://lists.gnu.org/archive/html/linphone-developers/2014-09/msg00109.html
http://www.successmonkey.co.nz/blog/building-linphone-for-ios
- 从 link 下载 Liblinphone iPhone SDK:http://www.linphone.org/releases/ios 选择最新的。
- 将两个文件夹(include 和 lib)移动到您的项目文件夹
- 在项目中添加这些文件夹的路径 构建设置 - INCLUDE 文件夹转到 headers,LIB 文件夹转到 图书馆.
- 在常规选项卡中链接框架添加LIB文件夹中的所有文件
- Download/clone 回购 https://github.com/BelledonneCommunications/linphone-iphone
- 找到4个文件:LinphoneManager.h/.m和Utils.h/.m,将它们包含在您的项目文件夹并将它们添加到左侧窗格中的其他 class 文件也
- 尝试编译您的项目 - xCode 会向您发送错误消息 - 没关系。
- 您需要检查错误并删除所有导致错误的文件导入(一些 Linphone 通讯簿文件/一些配置存储文件和一些您 不需要的助手 class在您的项目中使用(因为很可能您已经在现有项目中实现了此功能))
- 然后再次编译并检查方法中的所有错误。评论删除任何有问题的代码块(大约有 10-15 个)。
LinphoneManager class 已经包含许多有用的功能 - 例如良好的监视和使用 linphone 核心以及良好的日志记录等等,但不是全部(不幸的是)。
使用 Xcode 11 使用 macos 10.15.6 Catalina
Linphone SDK 4.4.0 使用 Cocoapod
https://github.com/BelledonneCommunications/linphone-sdk/blob/master/README.md
使用本地linphone SDK 从 gitlab 克隆 linphone-sdk 存储库:
$ git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git --recursive
$ git submodule update --init --recursive
或
$ git clone --recurse-submodules https://gitlab.linphone.org/BC/public/linphone-sdk.git
重建项目:
PODFILE_PATH= pod 安装 linphone-sdk 项目的构建目录在哪里,其中包含 linphone-sdk.podspec 文件和包含构建框架和资源的 linphone-sdk 输出目录。
Pod 文件看起来像
source "https://gitlab.linphone.org/BC/public/podspec.git"
source "https://github.com/CocoaPods/Specs.git"
def common_pods
use_frameworks!
pod 'linphone-sdk', '4.4.0'
end
然后用 Xcode 打开 linphone.xcworkspace 来构建和 运行 应用程序。
Linphone SDK 4.4.0 使用编译
$ git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git -- recursive
$ git submodule update --init --recursive
或
$ git clone --recurse-submodules https://gitlab.linphone.org/BC/public/linphone-sdk.git
转到构建目录
$ mkdir build && cd build
————————————
https://gitlab.linphone.org/BC/public/linphone-cmake-builder/blob/ios-3.13.19/README.python.md
首先,安装 brew
$ brew install cmake
$ brew install yasm
$ brew install pkg-config
安装 pip ->
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py
$ python -m pip install pystache //Check by $ python -m pip list
$ brew install doxygen
————————————
$ cmake .. -G Xcode -DLINPHONESDK_PLATFORM=IOS -DENABLE_G729=YES -DENABLE_G729B_CNG=YES -DENABLE_VCARD=OFF -DENABLE_ILBC=OFF -DENABLE_SILK=OFF -DENABLE_ISAC=OFF -DENABLE_MKV=OFF -DENABLE_GSM=OFF -DENABLE_DOC=OFF -DENABLE_UNIT_TESTS=OFF -DENABLE_LIME=OFF -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_NON_FREE_CODECS=OFF
注意 - 在此步骤中,我们还将在我们的 linphone sdk 中启用 G729 dedec 支持。
$ cmake --build . --config RelWithDebInfo
编译过程完成现在需要与Xcode
集成编译好的Linphone SDK集成到Xcode.
在下面的目录中找到编译好的sdk linphone-sdk -> 构建 -> linphone-sdk -> apple-darwin
- 框架和共享文件夹添加到xcode项目中,框架有多个通用架构。
- 框架路径添加到构建设置中的框架搜索
- Frameworks 文件夹的每个框架,在添加到 Xcode 框架设置时,应键入“嵌入并签名”(表示嵌入框架。)而不是默认的“不嵌入”。这是最重要的部分。
- apple-darwin -> 工具文件夹有 deply.sh 脚本,复制其内容并在“构建设置”中创建一个新的 运行 脚本并粘贴到其中
- 棘手的部分是将第 4 个点的脚本放置在何处,以便使用带条带和切片的存档上传应用程序。编辑方案 -> 存档 -> 打开下拉菜单 -> post 操作 -> + 添加新脚本 -> 复制和粘贴。
6(可选)。如果遇到脚本由于 fat 库使用我们的项目而导致应用程序崩溃,脚本中有一个小的变化,我从这个 URL -
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
# Start of Script modify - identify if the framework is FAT. If it is, then it skips it.
if [ ! -f "${FRAMEWORK_EXECUTABLE_PATH}" ]; then
continue
fi
if xcrun lipo -info "${FRAMEWORK_EXECUTABLE_PATH}" | grep --silent "Non-fat"; then
echo "Framework non-fat, skipping: $FRAMEWORK_EXECUTABLE_NAME"
continue
fi
echo "Thinning framework $FRAMEWORK_EXECUTABLE_NAME"
# end of Script modify
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
- 如果您正在使用 pod,则在您的 pod 目录中使用终端命令“pod deintegrate”取消集成 pod。同时从项目中删除 .xcworkspace 文件。
- 现在使用终端命令“pod install”安装 pod
注意:如果您的情况是我在第 6 点中提到的添加脚本导致应用程序崩溃,但每次添加脚本时,都必须 pod de integrate 帮助我避免它。
:) 现在享受在您的项目中使用 linphone sdk 吧。
linphone sdk 结束
我们项目中的 Linphone SDK 配置。
- 启用编解码器 - 要启用音频编解码器,首先在 Audio.plist 文件中启用 g729_preference 的默认值,最后一步在项目 -> 目标 -> 构建设置中找到“预处理器宏”并包含 HAVE_G729,它在 sip 日志中打印,如 Adding G729/8000 为了兼容性,以防万一。
#Update - 添加第 5 个编译点,用于将应用程序上传到应用程序商店和 G729 编解码器配置。