无法从cordova cli为iOS构建项目

Ami*_*wan 17 xcode android ios cordova

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

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

cordova run android
Run Code Online (Sandbox Code Playgroud)

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

cordova run ios
Run Code Online (Sandbox Code Playgroud)

我遇到了这个错误:

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&splash屏幕后才会出现此问题,因为即使在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构建项目或从CLI启动"serve"命令以进行调试.

请指导我,谢谢.


解决了

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

WWWWW

小智 23

只需删除平台,然后重新添加它们.

cordova platform rm ios
cordova platform rm android
cordova platform add ios
cordova platform add android
Run Code Online (Sandbox Code Playgroud)


Jas*_*Cox 21

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

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

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

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

然后我不得不重命名.xcodproj以匹配大小写.

之后,又出现了另一个问题:xcodebuild:error:项目'NewName.xcodeproj'不包含名为'NewName'的目标.

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

祝你好运!