#ios #xcode #continuous-integration #plist
#iOS #xcode #непрерывная интеграция #список
Вопрос:
Я искал какой-нибудь способ конвертировать файлы .pbxproj в XML-файлы для синтаксического анализа для конвейера CI. На Mac я могу использовать «plutil -convert xml1 < filename >», и это работает отлично, но инструмент анализа plist с открытым исходным кодом Linux полон ошибок и дает сбой (даже в режиме отладки) с простым «не удалось преобразовать файл plist».
Есть ли какое-либо альтернативное решение / способ разбора этого файла? Наша цель — проверить, что все файлы включены в несколько целевых объектов xcode.
Комментарии:
1. Я не знаю о разборе, но вы можете сгенерировать Xcodeproj с помощью XcodeGen. В конфигурации YML XcodeGen вы можете указать исходные каталоги для каждой цели.
2. Потребует ли это от нас постоянной регенерации файлов xcodeproj?
3. Нет, это не требуется. Я регистрирую файл pbxproj, поэтому у меня нет зависимости от XcodeGen. При регенерации просто имейте в виду, что конфигурация обновилась до изменений, которые вы внесли непосредственно в Xcode. Вам не нужно обновлять конфигурацию для новых файлов внутри существующих исходных каталогов.
4. Решение, которое я ищу, в первую очередь предотвратило бы загрузку плохого pbxproj
Ответ №1:
Если вы знакомы с ruby, вы можете использовать Xcodeproj gem. Это позволяет вам анализировать pbxproj
файл напрямую, без преобразования в xml
.
Ответ №2:
Как вы уже поняли, pbxproj на самом деле является просто списком (в старом стиле, формат nextstep, я полагаю;http://www.monobjc.net/xcode-project-file-format.html).
Для того, чтобы разобрать его, вам нужно иметь возможность разобрать список в Ubuntu.
Там есть несколько опций, включая plist-util, который работает, но не имеет такого же API. Лично я разветвил встроенную замену plutil, чтобы мне не нужно было обновлять наши скрипты для учета Linux и Mac envs отдельно.