启用 WebRTC iOS 的位码。

4

我在启用webrtc框架ios的位码(bitcode)方面遇到了麻烦,思路已经耗尽。 我按照官网上的说明进行操作,但是在运行python build_ios_libs.py --bitcode时出现错误。 以下是错误信息的一部分:

../../stats/rtc_stats.cc:30:17: error: loop variable 'element' is always a copy because the range of type 'const std::vector<bool>' does not return a reference [-Werror,-Wrange-loop-analysis] for (const T& element : vector)

如果有人能够让webrtc在iOS上启用bitcode,请帮助我,谢谢。


1
不幸的是,这是Xcode附带的最新clang和特定文件的问题,我们需要等待谷歌修复此问题,或将use_xcode_clang=false附加到构建脚本中,但这意味着我们将使用谷歌的特定clang版本,该版本不支持位码,因此没有太多意义。请参考此处的评论:https://dev59.com/x6bja4cB1Zd3GeqPnOK1#55125861?noredirect=1#comment113358134_55125861。 - goat_herd
1
WebRTC 的实现有些复杂。如果您不需要应用程序在 App Store 中,仍然可以使用私有 API WKUIDelegatePrivate,有一些委托将允许您启用 WebRTC https://github.com/wzw19890321/WebKit2/blob/eaa1f907695d6b0f6fd0e6e299c417a4f05cccf3/UIProcess/API/Cocoa/WKUIDelegatePrivate.h#L74。我成功地在我的 macOS 应用程序中启用了 WebRTC。 - Mickael Belhassen
@goat_herd,是否已经提交了有关webrtc的错误报告?如果没有,这个问题可能不会得到解决... - Philipp Hancke
@PhilippHancke 我不确定,目前对我来说解决方案就是等待。 - goat_herd
我即使没有启用位码也遇到了类似的错误。你是否检查过在未启用位码时是否可以构建? - Abhijith C R
@AbhijithCR 是的,如果禁用了位码,它就可以工作。我们需要启用它,以便在上传到iTunes时包含dsym。但现在我认为我们只需从xcode导出dsym并将其上传到crashlytics即可。 - KrisDev
3个回答

2
你可以等待或自己修复!
根据这个帖子: 什么是Clang的“range-loop-analysis”诊断? 只需要从存在问题的每一行中删除“&”符号(在那种上下文中对象本来就不是引用,这会导致警告,从而使编译失败)。例如:
for (const T& element : vector) {
变成:
for (const T element : vector) {
对于编译器抱怨的所有文件重复这个步骤(只有几个文件)。

1

0
为了节省您的时间。如果您正在构建使用以下命令之一:

tools_webrtc/ios/build_ios_libs.py --bitcode --arch arm64 x64

请编辑这些文件的第30行和第40行,并分别在for循环中删除&(和号):

stats/rtc_stats.cc:30:8:

sdk/objc/api/peerconnection/RTCStatisticsReport.mm:40:14:


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