【问题标题】:Cannot build project for iOS from cordova cli无法从 cordova cli 为 iOS 构建项目
【发布时间】:2014-10-06 14:01:42
【问题描述】:

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

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

cordova run android

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

cordova run ios

我遇到了这个错误:

mv:dest 文件已经存在:/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MyPKS-Info.plist mv:dest 文件已存在:/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MyPKS-Prefix.pch shell.js:内部错误 错误:EINVAL,无效参数“/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS.xcodeproj” 在 Object.fs.renameSync (fs.js:543:18) 在 /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:495:8 在 Array.forEach (本机) 在 Object._mv (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:471:11) 在 Object.mv (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:1491:23) 在 pbxProject。 (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:126:27) 在 pbxProject.EventEmitter.emit (events.js:98:17) 在 pbxProject。 (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/xcode/lib/pbxProject.js:30:18) 在 ChildProcess.EventEmitter.emit (events.js:98:17) 在句柄消息(child_process.js:322:10)

此问题仅在我手动访问 Xcode 项目以添加图标和启动画面后才会出现,因为即使在 config.xml 中声明图标和启动画面也不会自动添加到项目中。

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

错误:ENOENT,没有这样的文件或目录'/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MYPKS-Info.plist' 在 Object.fs.openSync (fs.js:427:18) 在 Object.fs.readFileSync (fs.js:284:15) 在 Object.exports.parseFileSync (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/plist-with-patches/lib/plist.js:18:19) 在 Object.module.exports.update_from_config (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:66:31) 在 Object.module.exports.update_project (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:189:21) 在 /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/prepare.js:113:31 在 _fulfilled (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:798:54) 在 self.promiseDispatch.done (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:827:30) 在 Promise.promise.promiseDispatch (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:760:13)

如果从 Xcode 启动,该项目工作正常,但我不再可以从 CLI 构建项目或从 CLI 启动“serve”命令以进行调试。

请指导我,谢谢。


已解决

通过使用 Xcode 重命名项目名称解决。感谢 Jason 的提示。

【问题讨论】:

  • 您的项目中有 unicode 字符吗?也许你可以检查CB-6992
  • @ArmNo 不,我的项目中没有任何 unicode 字符。
  • 我也有同样的情况,一旦我将 config.xml 中的项目名称更改为根本不包含大写字母的名称,它就可以工作了
  • 如果您很难找到“身份和类型”的位置,请使用“视图”>“实用程序”>“显示文件检查器”。欲了解更多信息,请参阅developer.apple.com/library/ios/recipes/…

标签: android ios xcode cordova


【解决方案1】:

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

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

【讨论】:

  • 可能是最简单的解决方案 - 先试试这个。
【解决方案2】:

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

我也为此苦苦挣扎。终于通过反复试验找到了解决方案。 D:

对我来说发生的事情是将项目名称重命名为大写。这给 Cordova 带来了各种各样的困惑。

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

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

之后,又出现了一个问题: xcodebuild:错误:项目“NewName.xcodeproj”不包含名为“NewName”的目标。

为了解决这个问题,我必须重命名目标以使其也具有正确的大小写。由于我是 iOS 开发新手,我不知道如何描述如何到达那里。我终于偶然发现了它,进行了更改,并且成功了!

祝你好运!

【讨论】:

  • 谢谢哥们!我在 Xcode 中重命名了项目名称,现在它又可以工作了。
  • 这正是我想要的!谢谢@Jason!
  • 我永远不会猜到这一点。这正是发生在我身上的事情。 ionic run ios 在我的 Mac CLI 中运行良好,后来我在 config.xml 中编辑了 <name></name>,将第一个字母设为大写。从那以后,我开始收到无法启动 iOS 模拟器的错误。将名称编辑回小写可以修复它。
【解决方案3】:

解决我的问题的方法是执行以下操作

  1. 移除ios平台;离子平台删除ios
  2. 移除安卓平台;离子平台删除android
  3. 重新添加 Ios 平台;离子平台添加ios
  4. 重新添加android平台;离子平台添加android
  5. 重建;离子构建

希望这对其他人有帮助。

【讨论】:

    【解决方案4】:

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

    <name>myApp</name>
    

    <name>MyApp</name>
    

    【讨论】:

      【解决方案5】:

      这在 Meteor 1.3.x 中有效 删除特定平台并通过控制台通过meteor 命令重新添加。

      例如。

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

      【讨论】:

        【解决方案6】:

        我遇到了同样的错误。发生这种情况的原因是因为我将 xml 中的名称从 myapp 更改为 MyApp。一旦我将其改回旧名称,它就会再次起作用。 在 xcode 中重命名也有效,非常感谢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-10-25
          • 1970-01-01
          • 2016-01-16
          • 2015-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多