Разбор файлов .pbxproj в Linux

#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 отдельно.