1

我需要在 Ionic Appflow 中的 iOS 构建期间运行本机 Xcode 构建脚本。

例如,我正在使用 cordova-plugin-salesforce-snapins 插件,根据他们的文档,我们需要运行这些脚本:

select Build Phases
create Run script
paste this line of code $PODS_ROOT/ServiceSDK/Frameworks/ServiceCore.framework/prepare-framework

在 Xcode 中是可能的,但在 ionic Appflow 中没有这样的方法来实现这一点。

请帮我配置一下。

4

1 回答 1

0

我使用 npm 插件cordova-node-xcode,它允许您将构建阶段写入生成的 Xcode 项目文件。添加"xcode": "^3.0.1"到 package.json 中的 devDependencies。

AddBuildScript.js从 Cordova “after_build” 钩子中调用 .js 脚本config.xml

<platform name="ios">
    <hook src="AddBuildScript.js" type="after_build" />

脚本AddBuildScript.js

var xcode = require('xcode'),
    fs = require('fs'),
    projectPath = 'platforms/ios/MyProj.xcodeproj/project.pbxproj',
    proj = xcode.project(projectPath);

proj.parse(function (err) {
        var scriptName = 'My Script';
        var buildPhases = proj.getPBXObject('PBXShellScriptBuildPhase');
        if (JSON.stringify(buildPhases).match(scriptName)) {
            console.log('Xcode project not updated - ' + scriptName + ' already exists')
        } else {
            var options = {shellPath: '/bin/sh', shellScript: '$PODS_ROOT/ServiceSDK/Frameworks/ServiceCore.framework/prepare-framework'};
            proj.addBuildPhase([], 'PBXShellScriptBuildPhase', scriptName, proj.getFirstTarget().uuid, options);
           
            fs.writeFileSync(projectPath, proj.writeSync());
            console.log('Xcode project updated - added ' + scriptName);
        }
});
于 2021-05-28T06:50:57.097 回答