Не удается создать Webrtc с включенным битовым кодом

#ios #webrtc #bitcode #webrtc-ios

Вопрос:

Я пытаюсь перестроить платформу iOS WebRTC с включенным битовым кодом, но это не работает, это приводит к ошибкам. И сообщения об ошибках являются

clang : ошибка: неизвестный аргумент: ‘-файл-компиляция-dir=.’

clang : ошибка: -gdwarf-aranges не поддерживается с-fembed-битовым кодом

Если я создам его без битового кода, включите true только тогда, когда он работает. Может ли кто-нибудь иметь представление, почему у меня возникла эта проблема? Моя версия Xcode 12.5.1

Комментарии:

1. Та же проблема. не повезло мне

2. @У Джихана возникла та же проблема, вы нашли для нее решение?

Ответ №1:

Ошибка возникает из-за старой версии clang в Xcode. Я выполнил скрипт с заданными аргументами:

 build_ios_libs.py --extra-gn-args 'use_xcode_clang=false enable_dsyms=true' --bitcode --arch device:arm64 simulator:x64
 

Внутри WebRTC dist есть новая версия пакета LLVM (clang), которая создаст правильную структуру!

Комментарии:

1. симулятор arm64 выходит из строя. Это необходимо для MacBook на M1. Эта ошибка не была устранена

2. Используя эти аргументы, фреймворк успешно создается для симулятора и устройств, но когда я пытаюсь добавить в демонстрационный проект, в котором включен бит-код, возникает ошибка для бит-кода.

3. @MrugeshTank, если вы используете crashlitics firebase. Вы можете отключить битовый код и загружать файлы dSYMs вручную. Это работает на меня firebase.google.com/docs/crashlytics/…

4. Платформа WebRTC использует llvm14, но xcode использует только llvm12. Они несовместимы друг с другом, по этой причине фреймворк не построен. Даже новая версия xCode 13 beta 5 не поддерживает создание платформы WebRTC, поскольку использует llvm 13 🙁

5. Итак, нет возможности создать платформу с поддержкой битового кода?

Ответ №2:

Я использовал llvm12 для создания webrtc на arm64 linux и сначала столкнулся с той же ошибкой clang : error: unknown argument: '-ffile-compilation-dir=.' .

В src/build/config/compiler/BUILD.gn , есть некоторые настройки, как показано ниже:

 if (is_nacl) {
# TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
cflags  = [
"-Xclang",
"-ffile-compilation-dir",
"-Xclang",
".",
]
} else {
# -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
# and -fcoverage-compilation-dir=.
cflags  = [ "-ffile-compilation-dir=." ]
}
 

Я заменяю все -ffile-compilation-dir , что в fdebug-compilation-dir то время работало нормально!

Комментарии:

1. Это сработало для меня. Интересно, собирается ли команда WebRTC это исправить

Ответ №3:

Похоже, что это было рассмотрено в хроме верхнего дерева. Согласно этому запросу на вытягивание, use_xcode_clang удаляется, потому что лязг верхнего дерева поддерживает -fembed-bitcode : https://github.com/chromium/chromium/commit/6edcf847d80f13740e1a26a86d3b95a0bb9fbcad