iOS WebRTC框架启用Bitcode。错误:-mllvm与-fembed-bitcode不兼容。

5

通过 pod 使用 webrtc,

https://cocoapods.org/pods/WebRTC

然而,我无法在项目中启用位码。
解决方案需要使用启用了位码的源代码进行构建。

https://webrtc.googlesource.com/src/+/main/docs/native-code/ios/index.md

然而,以下代码行 python tools_webrtc/ios/build_ios_libs.py --bitcode 产生了错误。
[7/3304] CC obj/third_party/libsrtp/libsrtp/srtp.o
FAILED: obj/third_party/libsrtp/libsrtp/srtp.o 
...
clang: error: -mllvm is not supported with -fembed-bitcode

[6/3304] CC obj/third_party/libsrtp/libsrtp/ekt.o
FAILED: obj/third_party/libsrtp/libsrtp/ekt.o 
...
clang: error: -mllvm is not supported with -fembed-bitcode

[9/3304] CC obj/third_party/libvpx/libvpx/bilinearpredict_neon.o
FAILED: obj/third_party/libvpx/libvpx/bilinearpredict_neon.o 
....
clang: error: -mllvm is not supported with -fembed-bitcode

尝试了类似的答案,但没有成功。


1
如有需要,在以下链接中可以找到同一命令的不同错误:linklinklink - tanmoy
1
同样的问题在这里 @Muhtasim... 我注意到的一件事是我的iOS的clang版本是 bin % clang++ --version Apple clang version 13.0.0 (clang-1300.0.29.3) Target: x86_64-apple-darwin20.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin而在PATH中:% ./clang --version clang version 14.0.0 (https://github.com/llvm/llvm-project/ c4b45eeb44fdc49d1b6199f242082268f8c017d0) Target: x86_64-apple-darwin20.6.0 Thread model: posix InstalledDir: ...webrtc_ios/src/third_party/llvm-build/Release+Asserts/bin/. - Tomer Petel
遇到完全相同的错误。目前还没有找到解决方案。如果有任何解决方案,请通知我。 - user8142828
@MuhtasimUlfatTanmoy,我看到你在这里向WebRTC提出了一个bug(https://bugs.chromium.org/p/webrtc/issues/detail?id=13440#c4),但我没有看到任何进展。我们有什么办法让WebRTC的开发人员重视它? - Tomer Petel
2
我能够在源代码上进行轻微更改,保留-mllvm标志来构建它,如问题中所讨论的。我已经发布了一个启用位码的仅支持arm64的webrtc二进制框架cocoa pod,其二进制大小仅为7.5 MB。目前它对我来说运行良好,尽管我正在等待一个适当的修复。 - tanmoy
1个回答

1

我最近发现了这个仓库,它通过Swift软件包管理器提供Google WebRTC:

https://swiftpack.co/package/stasel/WebRTC

这解决了我的所有问题!

arm64和x86的二进制文件也已包含在内。

我引用:

此存储库包含iOS和macOS的WebRTC框架二进制文件的非官方分发。

自版本M80以来,Google已弃用其移动二进制库分发(官方使用GoogleWebRTC pod)。要获得最新的WebRTC库,可以自行编译它,也可以使用此处或其他来源的预编译二进制文件。

发布

二进制发布与Chromium仪表板中指定的官方Chromium发布和分支相对应。

需要知道的事情

• 此存储库中的所有二进制文件都是从官方WebRTC源代码编译而成,没有对源代码或输出二进制文件进行任何修改。

• 动态框架(xcframework格式),其中包含多个适用于macOS和iOS的二进制文件。

包括Bitcode,这是文件大小较大的原因。


1
官方的WebRTC二进制文件GoogleWebRTC大小为22.5 MB,尽管不包括位码。而这个则接近659 MB。 - tanmoy
这个支持arm64的启用了bitcode的webrtc二进制框架目前对我来说运行良好,而且二进制文件大小仅为7.5 MB。虽然还在等待一个适当的修复。 - tanmoy
大小确实是一个重要问题,但是没有x86,我无法在SwiftUI中舒适地工作,因为它无法编译和绘制接口的预览。 - Daniele Ceglia
1
@Muhtasim Ulfat Tanmoy,我已经尝试了你编译的框架,但是当我试图上传我的应用到应用商店时,不幸的是它被拒绝了,因为该框架使用了私有API。 - Daniele Ceglia
3
目前正在修复此问题,并增加对x86的支持。有什么原因使得上传到应用商店时失败了吗?“arm64_x86_64”二进制文件大小接近16.8 Mb。 - tanmoy
2
这是我从App Store Connect收到的问题报告:"ITMS-90338:非公共API使用 - 应用程序在以下方法中引用了非公共选择器[MY_APP_NAME]:initWithURLStrings:,sdp,setIsEnabled:,setVideoContentMode:,videoSource。如果您源代码中的方法名称与上述私有Apple API匹配,则更改您的方法名称将有助于防止此应用程序在未来的提交中被标记。此外,请注意,上述一个或多个API可能位于包含在您的应用程序中的静态库中。如果是这样,它们必须被删除。" - Daniele Ceglia

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