Сохранять настройки Cordova в Xcode

Я хотел бы иметь возможность создать свой проект и открыть его в Xcode без необходимости вручную устанавливать переменные через пользовательский интерфейс Xcode. Я начал использовать параметр buildConfig Cordova для указания некоторых настроек (особенно с использованием устаревшей системы сборки и установки версии Swift), и это работает для сборок из командной строки, но они не переносятся в файлы проекта Xcode.

Я использовал специальный хук для изменения настроек сборки в моем файле project.pbxproj, но я надеялся, что в этом нет необходимости - просто выяснить, как называется настройка и в каком файле она находится, - это боль.

Я не смог найти его в документации Cordova, поэтому я спрашиваю... есть ли у Cordova способ сохранения этих настроек сборки в Xcode?


person Crag    schedule 21.11.2018    source источник


Ответы (2)


Вы сказали, что пытались использовать пользовательский хук, и этот метод полностью действителен. Вам не нужно вручную редактировать файл самостоятельно, если это то, что вы делали. Использование хука и использование пакета xcode npm сделает это намного проще. В этом случае вам нужно только указать ключ и значение, которые вы хотите изменить в файле проекта. Если вы хотите изменить конфигурацию своего рабочего пространства (создать системные параметры), вам следует использовать пакет plist npm. Использование этих инструментов может быть для вас менее болезненным, если вам будет проще, чем другой опубликованный ответ.

Пример редактирования проекта:

var xcode = require('xcode'),
    fs = require('fs'),
    plist = require('plist'),
    projectPath = 'myproject.xcodeproj/project.pbxproj',
    workspacePath = 'myproject.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings',
    myProj = xcode.project(projectPath);

myProj = myProj.parseSync();

// Add variable
myProj.AddBuildProperty('DEVELOPMENT_TEAM', 'XXXX', 'Debug');

// Save project file
fs.writeFileSync(projectPath, myProj.writeSync());

// Change workspace settings (build system)
fs.writeFileSync(workspacePath, plist.build({"BuildSystemType": "Original"}));
person David Briglio    schedule 22.11.2018

Сама Cordova не поддерживает прямое манипулирование файлом проекта Xcode (project.pbxproj), но вы можете использовать cordova-custom-config.

Добавьте его как плагин к вашему проекту:

cordova plugin add cordova-custom-config

Затем добавьте <custom-preference> в свой проект config.xml, например:

<custom-preference name="ios-XCBuildConfiguration-SWIFT_VERSION" value="2.3" />

В настоящее время cordova-custom-config поддерживает только манипуляции с XCBuildConfiguration блоками. Однако, используя настройки xcodefunc, вы можете напрямую вызывать функции интерфейс pbxProject cordova-node-xcode, который позволяет вам делать некоторые дополнительные вещи (хотя этот интерфейс в настоящее время недокументирован, поэтому у вас будет посмотреть код), например:

<custom-preference name="ios-xcodefunc" func="addResourceFile">
    <arg type="String" value="src/content/image.png" flag="path" />
</custom-preference>

cordova-custom-config применит конфигурацию, используя перехватчики жизненного цикла сборки Cordova, чтобы гарантировать сохранение изменений в собственном проекте Xcode.

person DaveAlden    schedule 22.11.2018