在Xcode中坚持Cordova设置

时间:2018-11-21 23:05:37

标签: xcode cordova cordova-ios buildconfig

我希望能够构建项目并在Xcode中打开它,而不必通过Xcode UI手动设置变量。我开始使用Cordova的buildConfig参数来指定一些设置(尤其是使用旧版构建系统并设置Swift版本),并且该设置适用于命令行构建,但是它们不会保留到Xcode项目文件中。

我当时正在使用自定义钩子来修改project.pbxproj文件中的构建设置,但我希望这不是必需的-仅弄清楚设置的名称和所包含的文件是一件很麻烦的事情。

我在Cordova文档中找不到它,所以我想问……Cordova是否可以将这些构建设置持久保存在Xcode中?

2 个答案:

答案 0 :(得分:0)

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 interfacecordova-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项目中。

答案 1 :(得分:0)

您说您尝试使用自定义钩子,此方法完全有效。如果您正在执行此操作,则不必自己手动编辑文件。使用钩子和使用xcode npm package将使此操作变得容易得多。在这种情况下,您只需要在项目文件中指定要更改的键和值即可。如果要更改工作空间配置(构建系统选项),则需要使用plist npm package。如果您发现使用这些工具比发布其他答案要容易,那么使用这些工具可能会更省心。

编辑项目的示例:

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"}));