使用cordova构建ios时出错

Posted

技术标签:

【中文标题】使用cordova构建ios时出错【英文标题】:Error building ios with cordova 【发布时间】:2016-07-27 14:17:34 【问题描述】:

我在使用 cordova 构建 ios 平台时遇到问题。我拥有应用程序和设备的所有证书,但是当我尝试在我的 ios 设备中运行时,执行 ionic run ios,控制台返回此错误:

Error: Source path does not exist: resources/ios/icon/icon-40@3x.png

这个路径写在config.xml文件中。

我尝试在 xCode 中运行它,但问题是:

Cordova/CDVViewController.h not found

我阅读了很多可能的解决方案,但任何一个都适合我。

我的xCode版本是7.3.1,cordova版本是6.3.0,cordova ios版本是4.2.0。

【问题讨论】:

您能否展示一些您的config.xmlindex.html 的代码示例?还有你在命令行上遇到的确切错误? 关于第二个问题,请参考这个answer 【参考方案1】:

如果您缺少图标,您可以运行命令

ionic resources --icon

这将生成具有在任何设备上运行所需的像素的所有图标。

要在设备上进行模拟,您首先需要

ionic build ios

然后

ionic simulate ios

更新 xcode 也是一个好习惯。

如果您仍然收到错误,您可以粘贴此行

"$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"

在构建设置 > 标题搜索路径上。 不要删除类似的行,只需将其添加到末尾即可。

【讨论】:

感谢您的回答,但我无法构建 ios,因为它显示相同的错误。现在在 xCode 而不是 CDVViewController 错误现在我有 CDVAppDelegate.h 错误。 您是否尝试将我提供给您的行粘贴到标题搜索路径中?几天前我遇到了这个问题,并且解决了它。 是的,我做到了!它只解决了一个错误,现在我遇到了另一个错误 非常感谢@Joseph Ocasio! 这对我没有任何作用【参考方案2】:

更新 - 03-08-2017

> ionic cordova resources

旧 CLI 命令:

我遇到了同样的错误,在重新运行 ionic resources 后它消失了。

问题是我在图标的路径中有 Windows 样式的斜杠(反斜杠),即我遇到的错误是这样的:

Error: Source path does not exist: resources\ios\icon\icon-40.png

因此,将反斜杠转换为斜杠为我解决了这个问题。

更新: 关于您的第二个错误,它帮助我重置了状态:

ionic state reset

在运行此命令之前,请确保您的package.json 中的cordovaPlatforms 下列出了ios。然后ionic 会自动重新下载您的插件并准备好构建。

希望对您有所帮助。保重!

【讨论】:

这不是问题的答案,因为 OP 实际上缺少 iPhone 6 plus 图标,但它确实帮助了我!很容易错过这个。【参考方案3】:

我只对其他图像有同样的错误:

源码路径不存在:resources/ios/icon/icon-40@2x.png

升级到Cordova 6.3.0 后发生这种情况,我已经解决了降级Cordova 的问题。

现在快速修复:

npm uninstall -g cordova
npm install -g cordova@6.2.0

【讨论】:

注意:对于那些无法更改其cordova 版本的人(例如因为使用租用的 Mac),请查看我的答案。它也适用于Cordova 6.3.0 您好我有同样的错误,我很好奇为什么使用更高版本的 Cordova 会导致这个问题?或者如果我想使用 > Cordova 6.3.1,我该怎么做? 你到底是怎么找到这个解决方案的??无论如何,它对我有用。谢谢。【参考方案4】:

只需使用: 移除平台

cordova platform remove ios

并用旧的添加ios平台

cordova platform add ios@4.0.0 --save

它对我有用..

@4.0.0 会自动选择以前的版本

【讨论】:

【参考方案5】:

我尝试了几次,终于成功了。

    使用ionic resources --icon,可能会遇到新问题

“由于错误无法生成图像无法上传源图像:错误:读取ECONNRESET”

别着急,以后试试

    使用ionic platform remove ios 执行成功时 使用ionic platform add ios

不要使用ionic state reset

【讨论】:

ionic resources --icon又出了问题错误:源路径不存在:resources\ios\splash\Default~iphone.png 任何不使用ionic state reset的具体原因?【参考方案6】:

尝试将config.xml中的“\”替换为“/”(反斜杠和斜杠)。

如果您在 Windows 系统上创建项目并移动到 macOS 进行 iOS 编译,它仍然具有 Windows URI 格式。

【讨论】:

【参考方案7】:

我已经多次发现这个问题,并且提供的一些答案直到今天都运行良好,当时没有人工作。

我的环境:MacOS high Sierra 10.13、ionic cli 3.18.0 和 cordova 7.1.0。

我的问题是,如果我运行ionic cordova prepare,它会失败,说我需要添加一个平台,如果我使用ionic cordova platform add ios 添加一个平台,它会失败,并出现答案中指定的错误:

Error: Source path does not exist: resources/ios/icon/icon-40@3x.png

解决我的问题的是手动创建平台文件夹:mkdir platforms。创建此文件夹后,添加平台照常工作。

我希望它可以帮助那里的人。

【讨论】:

【参考方案8】:

我遇到了与 cordova-ios@~4.5.1

类似的问题

ionic cordova build ios

> cordova build ios
Error: Source path does not exist: resources\android\icon\drawable-xhdpi-icon.png

[ERROR] An error occurred while running cordova build ios (exit code 1).

ionic cordova 平台添加 ios

> cordova platform add ios --save
Using cordova-fetch for cordova-ios@~4.5.1

Adding ios project...

Creating Cordova project for the iOS platform:

Path: platforms/ios
Package: -
Name: -
iOS project created with cordova-ios@4.5.4

Error: Source path does not exist: resources\android\icon\drawable-xhdpi-icon.png

我删除了ios平台

ionic cordova platform remove ios

并用旧的添加ios平台

ionic cordova platform add ios@4.0.0

这对我有用,正在等待 Cordova 更新 :)

【讨论】:

【参考方案9】:

这是猫捉老鼠的问题,

    图标资源未构建,因为未添加平台和 无法添加平台,因为图标资源不存在

ionic/cordova 非常不稳定,在 CI 管道中使用是一场噩梦。

这使 CI 管道不断崩溃。只需继续删除和添加 android/ios 平台并使用 ionic cordova resources --force 构建资源

【讨论】:

【参考方案10】:

运行这些命令为我解决了这个问题:

离子平台 rm ios

离子资源

离子平台添加ios

【讨论】:

【参考方案11】:

我不得不从任何其他项目 repo 手动复制文件 比如https://github.com/sphilee/eTAS_GPS/tree/master/resources/ios

【讨论】:

【参考方案12】:

它说资源目录只包含空文件夹。下载这个 repo (https://github.com/ionic-team/ionic2-app-base/tree/master/resources) 并替换资源目录

再次运行“离子科尔多瓦资源”。

【讨论】:

【参考方案13】:

你只需要更新cordova来修复这个错误:更新cordova运行下面的命令

$sudo npm install -g cordova@6.2.0

一旦你更新了命令下面的cordova类型来删除平台

$sudo ionic cordova platform rm ios --save

然后使用以下命令再次添加平台

$sudo ionic cordova platform add ios --save

希望对你有所帮助。

【讨论】:

【参考方案14】:

我遇到了同样的问题:

错误:源路径不存在:resources/ios/icon/icon-40@3x.png

看起来相对路径是对 config.xml 的引用。如果资源文件夹存在于“www”内,那么您可能需要更新相对路径。

我可以通过更新“www/resources/...”的相对路径来解决这个问题。

【讨论】:

【参考方案15】:

您的资源可能尚未运行。

运行:

npm i -g cordova-ionic platform rm ios
ionic platform rm ios // You want to do this just so when you recreate you have necessary resouces
ionic cordova resources
ionic cordova build --release <ios/android>

这个解决方案应该有更多的答案,因为 ionic 是一个基于 npm 的项目,这个命令将安装必要的库。

【讨论】:

【参考方案16】:

我使用了无脑方法,但它有效。我用他们要求的名称临时添加了资源。

就像我复制并粘贴图像 icon-20 copy.png 然后将其重命名为我需要的资源,例如 icon-small@2x.png

【讨论】:

【参考方案17】:

使用

离子科尔多瓦资源--icon

如果需要权限,请使用 sudo

sudo ionic cordova 资源 --icon

它将为 iOS 生成 28 个资源,为 Android 生成 6 个资源。

【讨论】:

【参考方案18】:

确保添加: xmlns:cdv="http://cordova.apache.org/ns/1.0

到 config.xml 的小部件部分(在最顶部)

这将添加所有必要的 Cordova 组件。

【讨论】:

以上是关于使用cordova构建ios时出错的主要内容,如果未能解决你的问题,请参考以下文章

添加 cordova-plugin-admobpro 后在 Cordova 本地构建时出错

添加cordova平台ios时出错

Cordova 构建失败:启动现代编译器时出错

运行cordova build android时出错(退出代码1)

构建 android 应用程序时出错 (cordova-plugin-crosswalk-webview)

Ionic Cordova 不构建 android