我是一名没有iOS开发经验的Web开发人员。现在我正在使用Cordova构建iOS应用程序。因为我不了解iOS或Xcode,所以对我来说很难。当我在Xcode内置或内置命令行时,我总是得到类似以下输出的错误。
Run custome shell script 'Copy www directory'
PhaseScriptExecution Copy\ www\ directory /Users/jyjin/Library/Developer/Xcode/DerivedData/myios-auhioanpfinvvvcrnvoaioslreyr/Build/Intermediates.noindex/myios.build/Debug-iphonesimulator/myios.build/Script-304B58A110DAC018002A0835.sh (in target: myios)
cd /Users/jyjin/workspace/gitProject/Cordova/FirstProject/platforms/ios
/bin/sh -c /Users/jyjin/Library/Developer/Xcode/DerivedData/myios-auhioanpfinvvvcrnvoaioslreyr/Build/Intermediates.noindex/myios.build/Debug-iphonesimulator/myios.build/Script-304B58A110DAC018002A0835.sh
/Users/jyjin/Library/Developer/Xcode/DerivedData/myios-auhioanpfinvvvcrnvoaioslreyr/Build/Intermediates.noindex/myios.build/Debug-iphonesimulator/myios.build/Script-304B58A110DAC018002A0835.sh: line 2: 27158 Segmentation fault: 11 node cordova/lib/copy-www-build-step.js
Command PhaseScriptExecution failed with a nonzero exit code
** BUILD FAILED **
The following build commands failed:
PhaseScriptExecution Copy\ www\ directory /Users/jyjin/Library/Developer/Xcode/DerivedData/myios-auhioanpfinvvvcrnvoaioslreyr/Build/Intermediates.noindex/myios.build/Debug-iphonesimulator/myios.build/Script-304B58A110DAC018002A0835.sh
(1 failure)
xcodebuild: Command failed with exit code 65
我在网站上阅读了很多解决方案,最后我发现在构建阶段有一些脚本:
NODEJS_PATH=/usr/local/bin; NVM_NODE_PATH=~/.nvm/versions/node/`nvm version 2>/dev/null`/bin; N_NODE_PATH=`find /usr/local/n/versions/node/* -maxdepth 0 -type d 2>/dev/null | tail -1`/bin; XCODE_NODE_PATH=`xcode-select --print-path`/usr/share/xcs/Node/bin; PATH=$NODEJS_PATH:$NVM_NODE_PATH:$N_NODE_PATH:$XCODE_NODE_PATH:$PATH && node cordova/lib/copy-www-build-step.js
在多次检出错误信息之后,我试图在Build Phases中删除&& node cordova/lib/copy-www-build-step.js
,它成功构建,但是在html中没有预期的页面效果(因为我认为没有复制www资源)。
我试图在copy-www-build-step.js
中检查一些env PATH值,所以我在copy-www-build-step.js
中写了一些日志代码,但不知道如何在Xcode中打印js日志。然后我找到了cordova-plugin-console
,但是npm doc说它是重复的,包含了Cordova的最后一个版本,而且我的也是最新版本。
哦,上帝!一个星期过去了......我只是想建立一个iOS应用程序。这很难玩。鬼知道我的经历:配置证书,配置文件,从头开始构建Cordova应用程序,甚至花99美元购买苹果开发者帐户......
只想在我的空闲时间自己玩iOS应用程序...希望有人可以帮助我~~
-- From a desperate Chinese boy !
哦!我修好了〜
首先,检查脚本:
NODEJS_PATH=/usr/local/bin; NVM_NODE_PATH=~/.nvm/versions/node/`nvm version 2>/dev/null`/bin; N_NODE_PATH=`find /usr/local/n/versions/node/* -maxdepth 0 -type d 2>/dev/null | tail -1`/bin; XCODE_NODE_PATH=`xcode-select --print-path`/usr/share/xcs/Node/bin; PATH=$NODEJS_PATH:$NVM_NODE_PATH:$N_NODE_PATH:$XCODE_NODE_PATH:$PATH && node cordova/lib/copy-www-build-step.js
目前的错误是xcodebuild: Command failed with exit code 65
。这是第一个错误,当在mac中运行时,&&
应该是&
。
然后,错误转为Command /bin/sh failed with exit code 127
。我发现xcode错误消息:node: command not found
。
所以我在命令行中运行find /usr/local/n/versions/node/* -maxdepth 0 -type d 2>/dev/null | tail -1
。并获取节点结果路径/usr/local/n/versions/node/11.12.0
跑
node -v // v10.15.3
所以我删除build_phases中的所有脚本,并为我的真实nvm节点路径提供它的节点路径,更改build_phases,如下所示:
/Users/jyjin/.nvm/versions/node/v10.15.3/bin/node cordova/lib/copy-www-build-step.js
建立成功!
摘要! cordova auto build_phases脚本可能不适合您的环境,请确保构建阶段可以获取您的节点路径!