Нужны ли мне файлы bcsymbolmap, созданные Carthage

Я использую диспетчер зависимостей Carthage в своем проекте iOS. У меня есть папка Carthage/build в моем репозитории, чтобы всегда иметь готовые фреймворки при проверке репо.

Мне интересно, для чего нужны файлы bcsymbolmap в папке сборки. Многие из них создаются с каждым carthage update.

Мне нужно сохранить эти файлы? Должны ли они быть в моем репозитории?


person codingFriend1    schedule 24.02.2017    source источник
comment
отличный вопрос.   -  person Fattie    schedule 02.05.2017


Ответы (3)


Нет, вам не нужны эти файлы. Если вы правильно настроили Carthage, двоичные файлы, файлы .dsym и .bcsymbolmap будут скопированы на этапе сборки. Когда вы архивируете сборку для распространения с помощью App Store, все необходимые файлы будут включены в архив, и после загрузки сборки в App Store вы сможете загружать файлы dsyms в любое время (чтобы иметь возможность декодировать отчеты о сбоях). На самом деле вам не нужно хранить файлы .dsyms и .bcsymbolmap в вашем репозитории.

Есть хорошая статья, объясняющая, что происходит во время сборки фреймворка (и что на самом деле делают скрипты Carthage) https://instabug.com/blog/ios-binary-framework/. Также в нем объясняется, для чего используются файлы .bcsymbolmaps - чтобы серверы Apple могли перестроить ваш код с помощью Bitcode, а затем вы могли десимволизировать свои отчеты о сбоях.

Таким образом, вам не нужно хранить эти файлы. Нет необходимости хранить их в репозитории. Другая причина не хранить содержимое папки Build заключается в том, что в любом случае ваш проект может не выполнить сборку с ним на другом компьютере с другой средой. Если вы хотите собрать свой проект с одинаковыми версиями зависимостей - используйте команду Carthage bootstrap вместо update.

P.S. Также вы можете изучить, что делает команда copy-frameworks: . com / Carthage / Carthage / blob / fc0166b4827736bac2c804fc928797f1a742c455 / Source / carthage / CopyFrameworks.swift

person lobstah    schedule 01.07.2019

Если вы используете carthage build без спецификации проекта, все .bcsymbolmaps следует удалить, но если вы используете, например, carthage build Alamofire он должен просто удалить соответствующий .bcsymbolmap

Из обсуждение проблемы с github. Похоже, вам не нужны эти файлы, поскольку по умолчанию они удаляются при создании новой сборки.

В общем, вы не должны фиксировать файлы, созданные во время локальной сборки, в ваш репозиторий, поскольку сборки могут быть специфичными для устройства, и каждый, кто выполняет клонирование или извлекает из вашего репозитория, должен иметь возможность выполнить сборку самостоятельно.

person kowsky    schedule 08.03.2017
comment
Спасибо, что указали на обсуждение на github. Здесь также есть ссылки на ветку на форумах разработчиков Apple. Похоже, что для загрузки приложения в App Store требуются bcsymbolmap файлы. Но похоже, что старые файлы никогда не очищаются Carthage ... Кстати, причина для фиксации продуктов сборки состоит в том, чтобы разрешить сборку приложения сразу после получения репозитория без необходимости перестраивать все зависимости. Кроме того, проект зависимостей может быть удален из github, поэтому мы хотим сохранить их локально. - person codingFriend1; 08.03.2017
comment
В случае с Carthage есть веские причины для фиксации папок Build и Checkout. См. stackoverflow.com/questions/39662504/. Если вы этого не сделаете, кто-то, проверяющий код, может невольно построить что-то отличное от того, что вы тестировали перед проверкой. - person pbm; 20.05.2017

Карта символов битового кода (BCSymbolMap)

.bcsymbolmap - это текстовый файл с отладочной информацией, который создается для декодирования трассировки стека. Решает те же проблемы, что и .dSYM [About], но на более низком уровне для и когда Bitcode [О программе] создается

Это выглядит как:

BCSymbolMap Version: 2.0
__swift_FORCE_LOAD_$_swiftCompatibility50
__swift_FORCE_LOAD_$_swiftCompatibility51
__swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements
_$sSo26SCNetworkReachabilityFlagsVMa
_$sSo24SCNetworkReachabilityRefaMa
...

Мне нужно сохранить эти файлы? Должны ли они быть в моем репозитории?

Они не обязательны

person yoAlex5    schedule 26.04.2021