webrtc iOS端编译

本文详细介绍了如何修改WebRTC源代码中的build_ios_libs.py文件,以支持不同的CPU架构(如arm64、arm、x64、x86),并提供了编译WebRTC Framework的具体步骤,包括如何避免bitcode导致的框架体积膨胀问题,以及如何处理仅包含特定CPU架构的framework在上传到AppStore或podtrunk时遇到的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译生成Framwork

1.修改路径webrtc/src/tools_webrtc/ios/build_ios_libs.py文件的cpu架构

DEFAULT_ARCHS = ENABLED_ARCHS = ['arm64','arm','x64','x86']
复制代码
  • x64是模拟器,是mac电脑cpu
  • arm64是64位cpu
  • arm是32位cpu
  • x86是对应i386

2.直接运行命令--bitcode是开启bitcode功能,如果开启会导致生成的freamwork非常的大。所以一般不增加,切换到目录webrtc/src/tools_webrtc/ios

python build_ios_libs.py
复制代码

3.最后输出的WebRTC.frameworkwebrtc/src/out_ios_libs目录下.

如果遇到只要部分cpu架构可以自己进行删除控制。
Note: 如果你的freamwork只有armv7 和 arm64架构,但是在你上传到App Store或者pod trunk 需要x86_64或i386 可以在工程配置Build Phase中的/bin/sh增加以以下脚本进行忽略。
遇到一个比较坑的问题在build_ios_libs.py有一行将x86架构移除,建议此处将它注释掉,否则一直编译不通过支持i386架构。

# Ignoring x86 except for static libraries for now because of a GN build issue
  # where the generated dynamic framework has the wrong architectures.
  if 'x86' in architectures and args.build_type != 'static_only':
    architectures.remove('x86')
复制代码
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

# This script loops through the frameworks embedded in the application and
# removes unused architectures.
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"

    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
复制代码

编译模拟器和真机测试demo

1.使用gn配置生成支持 Ninja编译的配置文件。(gn相关文档地址
gn需要配置的的主要变量有以下:

  • target_os: 目标系统有:android, ios, mac,linux,chromeos,如:iOS设置为 target_os="ios"
  • target_cpu: 目标cpu架构有:
    1. ios对应cpu有:arm,arm64,x64,x86
    2. android对应cpu有:arm64,x86(32位),x64(64位)
    3. chromeos对应有:mips64el
    4. linux对应:x86,x64
  • is_debug:是否是debug模式,默认是true
# debug build for 64-bit iOS
gn gen out/ios_64 --args='target_os="ios" target_cpu="arm64" ios_code_signing_identity="80CEE5E27C9C771EAED8BDBB3C5D704DEA0C3A86"'

# debug build for simulator
gn gen out/ios_sim --args='target_os="ios" target_cpu="x64"'
// 编译debug的测试demo
ninja -C out/ios_64 AppRTCMobile

gn gen out/ios --args='target_os="ios" target_cpu="arm64" ios_code_signing_identity="80CEE5E27C9C771EAED8BDBB3C5D704DEA0C3A86"' --ide=xcode
open -a Xcode.app out/ios/all.xcworkspace
复制代码

转载于:https://juejin.im/post/5c0f7c16f265da616d540880

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值