无法从cordova cli为iOS构建项目

时间:2014-08-13 09:09:58

标签: android ios xcode cordova

我使用Cordova CLI 3.5.0版创建了一个项目。

我已经使用CLI成功部署了Android平台项目。

cordova run android

但是,我在为iOS部署项目时遇到问题。

cordova run ios

我遇到了这个错误:

mv: dest file already exists: /Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MyPKS-Info.plist

mv: dest file already exists: /Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MyPKS-Prefix.pch

shell.js: internal error
Error: EINVAL, invalid argument '/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS.xcodeproj'
    at Object.fs.renameSync (fs.js:543:18)
    at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:495:8
    at Array.forEach (native)
    at Object._mv (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:471:11)
    at Object.mv (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:1491:23)
    at pbxProject. (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:126:27)
    at pbxProject.EventEmitter.emit (events.js:98:17)
    at pbxProject. (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/xcode/lib/pbxProject.js:30:18)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at handleMessage (child_process.js:322:10)

此问题仅在我手动访问Xcode项目以添加Icon&自图标&即使在config.xml中声明,启动屏幕也不会自动添加到项目中。

我试图删除Info.plist& Prefix.pch文件,但随后出现此错误。

Error: ENOENT, no such file or directory '/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MYPKS-Info.plist'
    at Object.fs.openSync (fs.js:427:18)
    at Object.fs.readFileSync (fs.js:284:15)
    at Object.exports.parseFileSync (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/plist-with-patches/lib/plist.js:18:19)
    at Object.module.exports.update_from_config (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:66:31)
    at Object.module.exports.update_project (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:189:21)
    at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/prepare.js:113:31
    at _fulfilled (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:798:54)
    at self.promiseDispatch.done (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:827:30)
    at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:760:13)

如果从Xcode启动项目,该项目工作正常,但我不再能够从CLI构建项目或启动" serve"来自CLI的命令用于调试目的。

请指导我,谢谢。


解决

通过使用Xcode重命名项目名称来解决。谢谢杰森的提示。

wwwww

6 个答案:

答案 0 :(得分:23)

只需删除平台,然后重新添加即可。

cordova platform rm ios
cordova platform rm android
cordova platform add ios
cordova platform add android

答案 1 :(得分:21)

编辑:首先尝试这个其他解决方案!它适用于大多数问题:https://stackoverflow.com/a/28300528/1250444

我也在努力解决这个问题。最后通过反复试验找到了解决方案。 d:

我发生的事情是将项目名称重命名为大写字母。这给科尔多瓦带来了各种各样的困惑。

我做的第一件事是重命名有问题的plist和pch文件以匹配正确的大小写。因此,在您的情况下,如果它是myPKS,但现在是MyPKS,则需要将文件重命名为MyPKS-Info.plist和MyPKS-Prefix.pch。

然后,我必须重命名.xcodproj以匹配大小写。

之后,另一个问题发生了: xcodebuild:错误:项目'NewName.xcodeproj'不包含名为'NewName'的目标。

要解决这个问题,我必须重命名目标以获得适当的大小写。由于我是iOS开发新手,我不知道如何描述如何到达那里。我终于偶然发现了它,做出了改变,它起作用了!

祝你好运!

答案 2 :(得分:2)

通过以下方式解决了我的问题

  1. 删除ios平台;离子平台删除ios
  2. 删除android平台;离子平台删除android
  3. 添加Ios平台;离子平台添加ios
  4. 添加android平台;离子平台添加android
  5. 重建;离子生成
  6. 希望这有助于其他任何人。

答案 3 :(得分:1)

Jason Cox的回答帮助了我 - 但我没有重命名任何文件,我只需要在config.xml中更改应用程序的名称

<name>myApp</name>

<name>MyApp</name>

答案 4 :(得分:1)

这适用于Meteor 1.3.x. 删除特定平台并通过控制台通过meteor命令重新添加。

对于前。

enter image description here

meteor list-platforms
meteor remove-platform ios
meteor add-platform ios

答案 5 :(得分:0)

我得到了同样的错误。之所以发生这种情况,是因为我将xml中的名称从myapp更改为MyApp。一旦我改回原来的名字,它再次起作用。 在xcode中重命名也很有效,谢谢你。