我希望能够构建项目并在Xcode中打开它,而不必通过Xcode UI手动设置变量。我开始使用Cordova的buildConfig参数来指定一些设置(尤其是使用旧版构建系统并设置Swift版本),并且该设置适用于命令行构建,但是它们不会保留到Xcode项目文件中。
我当时正在使用自定义钩子来修改project.pbxproj文件中的构建设置,但我希望这不是必需的-仅弄清楚设置的名称和所包含的文件是一件很麻烦的事情。
我在Cordova文档中找不到它,所以我想问……Cordova是否可以将这些构建设置持久保存在Xcode中?
答案 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 interface的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项目中。
答案 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"}));