<p>另一个很好的选择,特别是对于Cordova项目,是使用XCODE节点模块:<a href="https://github.com/alunny/node-xcode" rel="nofollow noreferrer">node-xcode</a>;您可以通过NPM轻松地添加它。</p>
<p>一旦就位,就可以在prepare之后创建一个<strong>钩子来修改pbxproj,在每个构建中注入自定义源文件、附加框架等。事实上,Cordova本身在自己的构建过程中利用了这个模块。</p>
<p>在我的解决方案中,我首先通过npm添加了模块:</p>
<pre><code>npm install xcode --save-dev
</code></pre>
<p>然后我创建并在准备好hook之后将额外的框架添加到我的XCode项目中:</p>
<pre><code>var xcode = require('xcode'),
fs = require('fs'),
rootdir = process.argv[2],
projectPath = rootdir + '/platforms/ios/my-project/project.pbxproj',
proj = new xcode.project(projectPath);
proj.parse(function(err) {
if (err) {
console.log("Oh noes! XCODE project failed to parse:");
console.log(err);
} else {
proj.addFramework('Fabric.framework', {customFramework:true});
proj.addFramework('Crashlytics.framework', {customFramework:true});
proj.addFramework('AdSupport.framework');
proj.addFramework('FacebookSDK.framework', {customFramework:true});
fs.writeFileSync(projectPath, proj.writeSync());
console.log("Updated XCODE project with references to social libs!");
}
});
</code></pre>
<p>XCODE模块足够聪明,可以知道您试图添加的框架/文件/等等是否已经存在,并且不会再尝试添加它们。</p>