
После добавления зависимостей Firebase через CocoaPods в iOS-проект, при сборке я столкнуться с не приятной ошибкой:
unsupported option '-G' for target 'arm64-apple-ios10.0'
Ошибка указывает на то, что флаг -G не поддерживается компилятором для платформы iOS. Проблема кроется в библиотеке BoringSSL-GRPC, которая используется Firebase под капотом (в частности, через gRPC).
BoringSSL:
Это ответвление библиотеки OpenSSL, разработанный Google. Он используется для безопасного шифрования, передачи данных по HTTPS и других криптографических операций.
GRPC:
Это протокол удалённого вызова процедур (RPC), также от Google. Он позволяет разным сервисам (например серверу и приложению) обмениваться данными.
Причина
Внутри Pods/BoringSSL-GRPC, во вкладке Build Phases → Compile Sources, почти у всех .c и .cc файлов вручную прописан флаг:
-DOPENSSL_NO_ASM -GCC_WARN_INHIBIT_ALL_WARNINGS -w -DBORINGSSL_PREFIX=GRPC -fno-objc-arc
Это значит что каждый файл вручную компилируется с -G, и этот флаг передаётся в компилятор, который для iOS его не поддерживает.

Решение
Чтобы не удалять библиотеку (она нужна для работы Firebase), мы используем post_install в Podfile, чтобы программно удалить флаг -G и - GCC_WARN_INHIBIT_ALL_WARNINGS у всех файлов этой зависимости:

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf-with-dsym'
if target.respond_to?(:product_type) && target.product_type == "com.apple.product-type.bundle"
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
end
end
# Проверка на наличие метода source_build_phase
if target.respond_to?(:source_build_phase) && target.source_build_phase
target.source_build_phase.files.each do |file|
if file.settings && file.settings['COMPILER_FLAGS']
flags = file.settings['COMPILER_FLAGS'].split
flags.reject! { |flag| flag == '-G' || flag == '-GCC_WARN_INHIBIT_ALL_WARNINGS' }
file.settings['COMPILER_FLAGS'] = flags.join(' ')
end
end
end
end
end
Пояснение
source_build_phase позволяет получить доступ к каждому исходному файлу зависимости.
Проверяем, есть ли у файла COMPILER_FLAGS.
Если есть — удаляем флаги -G и -GCC_WARN_INHIBIT_ALL_WARNINGS.
Post_install блок автоматически обрабатывает все файлы после pod install.
-
После того как внесли изменения в Podfile чистим кэш:
Выполнить в терминале -
rm -rf Pods Podfile.lock
pod deintegrate
-
Устанавливаем заново:
Выполнить в терминале - pod install --repo-update
-
Чистим билд в Xcode:
Shift + Cmd + K
Готово )
Мой полезный телеграмм канал - https://t.me/hubonedeveloper
AlanFrost
Или можно обновить библиотеки фаербейза до плюс-минус актуальных. Т.к. проблема связана именно с попыткой собрать новым хкодом уж очень старые либы фаербейза.
В моём случае всё завелось уже на 12.4.1