Как создается файл .dSYM?

Я работаю над приложением с другим разработчиком, и они просто отправили релиз в магазин приложений, который был построен на их компьютере. Чтобы сделать сборку на моей машине (которая принадлежит к тому же git commit), мне нужно изменить путь к одной из библиотек, которые мы используем в моем проекте XCode. Будут ли какие-либо изменения, внесенные в файл проекта XCode, изменить dSYM? Если бы мне удалось создать сборку без изменения файла проекта XCode, будет ли файл dSYM одинаковым?

Ответ 1

Файл dSYM является "файлом символов отладки". Он генерируется, когда в настройках сборки вашего проекта включена опция "Strip Debug Symbols".

Когда этот параметр включен, имена символов ваших объектов удаляются из результирующего скомпилированного двоичного файла (одним из многих контрмер, которые нужно попытаться предотвратить, будут хакеры/взломщики от обратного проектирования вашего кода, среди других оптимизаций для двоичного размера и т.д..).

Файлы

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

Они полезны для повторной символики ваших отчетов о сбоях. С раздробленным двоичным кодом вы не сможете читать отчеты о сбоях без их повторной символики. Без dSYM в отчете о сбое будут отображаться только адреса памяти объектов и методов. Xcode использует dSYM, чтобы вернуть символы в отчет о сбое и позволить вам прочитать его правильно.

В идеале ваш файл dSYM не должен отслеживаться в вашем репозитории git. Как и другие двоичные файлы, которые меняются при построении, нецелесообразно держать их в управлении источником. Тем не менее, имея в виду, важно, чтобы вы храните файлы dSYM для каждой распределенной сборки (бета-версии, пресс-релизы, дистрибутивы приложений и т.д.) Где-то в безопасности, чтобы вы могли символизировать любые отчеты о сбоях, которые вы могли бы получить. Xcode делает это автоматически для вас, когда вы используете опцию Archive. Созданный архив содержит ваше приложение и его dSYM и хранится в каталоге производных данных Xcode.