Настройки Persist Cordova в Xcode - PullRequest
       75

Настройки Persist Cordova в Xcode

0 голосов
/ 22 ноября 2018

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

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

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

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы сказали, что пытались использовать пользовательский хук, и этот метод полностью действителен.Вам не нужно вручную редактировать файл, если вы этим занимались.Использование ловушки и пакета 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"}));
0 голосов
/ 22 ноября 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.

...