iOS webRTC库支持armv7和;arm64

iOS webRTC库支持armv7和;arm64,ios,webrtc,armv7,arm64,Ios,Webrtc,Armv7,Arm64,如何获得在iOS中同时支持armv7和arm64的webRTC库?您很幸运。我刚刚在我的项目中完成了几天的webrtc集成。我的解决方案如下: 将为armv7构建的所有*.a组合到libWebRTC-armv7中。a:使用以下命令行 libtool-static-o src/out\u ios\u armv7/Release iphoneos/libWebRTC temp.a src/out\u ios\u armv7/Release iphoneos/*.a strip-S-x-o src/o

如何获得在iOS中同时支持armv7和arm64的webRTC库?

您很幸运。我刚刚在我的项目中完成了几天的webrtc集成。我的解决方案如下:

  • 将为armv7构建的所有*.a组合到libWebRTC-armv7中。a:使用以下命令行

    libtool-static-o src/out\u ios\u armv7/Release iphoneos/libWebRTC temp.a src/out\u ios\u armv7/Release iphoneos/*.a

    strip-S-x-o src/out\u ios\u armv7/Release iphoneos/libWebRTC-armv7.a-r src/out\u ios\u armv7/Release iphoneos/libWebRTC temp.a

  • 将为arm64生成的所有*.a合并到libWebRTC-arm64。a:

    libtool-static-o src/out\u ios/Release iphoneos/libWebRTC temp.a src/out\u ios/Release iphoneos/*.a

    strip-S-x-o src/out_ios/Release iphoneos/libWebRTC-arm64.a-r src/out_ios/Release iphoneos/libWebRTC temp.a

  • 创建同时支持armv7和arm64的libWebRTC:

    lipo-创建src/out\u ios\u armv7/Release iphoneos/libWebRTC-armv7.a src/out\u ios/Release iphoneos/libWebRTC-arm64.a-输出libWebRTC.a

  • 注意:只需使用arm64将您的armv7库构建到单独的文件夹:

    export GYP_GENERATORS="ninja"
    export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=armv7"
    export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios_armv7"
    export GYP_CROSSCOMPILE=1
    pushd src
    gclient runhooks
    ninja -C out_ios_armv7/Release-iphoneos AppRTCDemo
    popd
    

    您可以访问我们的博客:

    我已经编写了一个shell脚本,将WebRTC源代码构建到一个框架(不包括apprtc信令库),供iOS使用

    如果你看不懂中文,你只要看嵌入在博客里的脚本就够了!啊哈

    ./build_webrtc.sh build_all
    
    armv7设备中可能存在错误。该错误是由armv7 neon函数中VP8解码中的堆栈溢出问题引起的

    您可以确认此修补程序以修复其崩溃:

    diff --git a/source/libvpx/vp8/common/arm/neon/vp8_subpixelvariance_neon.c b/source/libvpx/vp8/common/arm/neon/vp8_subpixelvariance_neon.c
    index 8308d55..a66b6f5 100644
    --- a/source/libvpx/vp8/common/arm/neon/vp8_subpixelvariance_neon.c
    +++ b/source/libvpx/vp8/common/arm/neon/vp8_subpixelvariance_neon.c
    @@ -1003,7 +1003,7 @@ unsigned int vp8_sub_pixel_variance8x8_neon(
             const unsigned char *dst,
             int dst_stride,
             unsigned int *sse) {
    -  DECLARE_ALIGNED_ARRAY(kAlign16, uint8_t, temp2, kHeight8 * kWidth8);
    +  DECLARE_ALIGNED_ARRAY(kAlign16, uint8_t, temp2, kHeight8PlusOne * kWidth8);
       DECLARE_ALIGNED_ARRAY(kAlign16, uint8_t, fdata3, kHeight8PlusOne * kWidth8);
       if (xoffset == 0) {
         var_filter_block2d_bil_w8(src, temp2, src_stride, kWidth8, kHeight8,
    
    希望这能帮助你


    diveinedu.com的学生刚刚克服并修复了这个错误。

    谢谢Phoungle,这真的很有效

    …但有一个转折点

    …正如Omer Waqas Khan所注意到的,可能会有这样一种情况:一个人(在lipo-ing时)遇到错误消息:两个LIB不能具有相同的结构

    当然,我去了WTF…lipo,你怎么了…它们的结构不同…我就是这样建造的

    但随后我开始仔细检查:
    -我去了一个文件夹,在那里我有arm64_合并库和

    lipo -info lib's_name.a
    
    它报告说它同时是armv7和arm64类型。我很困惑,然后

    lipo -info *.a
    
    …所有库(其中72个)均报告为arm64类型,但2个除外

    libisac_fix.a
    libisac_neon.a
    
    不管出于什么原因,他们都是armv7。 当天早些时候,我正在使用一个“几天前”的webrtc克隆。那时,我记得我总是只得到70个图书馆。但后来,出于其他原因,我决定

    gclient sync
    

    在那之后,我得到了72个……因此,我只是删除了libisac的胡说八道。现在,两个fat_库的类型不同,我可以成功地lipo。

    我已经按照您的教程进行了学习,但是当脚本将库armv7和arm64组合在一起时,出现了一个错误,即两个库不能具有相同的结构。我还尝试在iPhone6和iPad3上运行arm64版本,收到的错误是架构无效。