【问题标题】:Cordova ios error building Images.xcassetsCordova ios 错误构建 Images.xcassets
【发布时间】:2016-07-05 21:11:25
【问题描述】:

我花了很多时间试图解决这个问题。

我更新了科尔多瓦,自从 el capitan 之后,我的 Mac 现在遇到了 NPM 和科尔多瓦的问题。

我已经安装了它,但我现在必须使用 sudo for cordova。

尝试了以下方法:

sudo cordova platform remove ios
sudo cordova platform add ios
sudo cordova build ios

这给了我以下输出:

** BUILD FAILED **


The following build commands failed:
    CompileAssetCatalog build/emulator/<AppName>.app <AppName>/Images.xcassets
(1 failure)
ERROR building one of the platforms: Error code 65 for command: xcodebuild with args: -xcconfig,/Users/MacUserName/Desktop/<AppName>/<AppName>/platforms/ios/cordova/build-debug.xcconfig,-project,<AppName>.xcodeproj,ARCHS=i386,-target,<AppName>,-configuration,Debug,-sdk,iphonesimulator,build,VALID_ARCHS=i386,CONFIGURATION_BUILD_DIR=/Users/MacUserName/Desktop/<AppName>/<AppName>/platforms/ios/build/emulator,SHARED_PRECOMPS_DIR=/Users/MacUserName/Desktop/<AppName>/<AppName>/platforms/ios/build/sharedpch
You may not have the required environment or OS to build this project
Error: Error code 65 for command: xcodebuild with args: -xcconfig,/Users/MacUserName/Desktop/<AppName>/<AppName>/platforms/ios/cordova/build-debug.xcconfig,-project,<AppName>.xcodeproj,ARCHS=i386,-target,<AppName>,-configuration,Debug,-sdk,iphonesimulator,build,VALID_ARCHS=i386,CONFIGURATION_BUILD_DIR=/Users/MacUserName/Desktop/<AppName>/<AppName>/platforms/ios/build/emulator,SHARED_PRECOMPS_DIR=/Users/MacUserName/Desktop/<AppName>/<AppName>/platforms/ios/build/sharedpch

科尔多瓦版

sudo cordova -v
6.0.0

更新:我现在运行的是 6.1.1,还是同样的问题

Cordova iOS 平台版本

sudo cordova platform ios -v
6.1.1

Mac 版本:10.11.3
XCode 版本:7.2.1

【问题讨论】:

  • 有同样的错误。删除并重新添加了ios平台然后删除了config.xml中的图标说明并重新构建成功。不知道如何在不使它们大小正确的情况下生成图标,但不知何故,cordova 中的某些组件设法创建了错误大小的所有图标(在我的情况下为 1024x1024)。去组队。
  • @jimmont 我确实尝试过多次删除平台并重新添加它。从来没有运气
  • cordova 有几个有用的应用程序图标/启动画面生成器:github.com/AlexDisler/cordova-splashgithub.com/AlexDisler/cordova-icon

标签: ios cordova npm


【解决方案1】:

我设法通过以下方式解决了这个问题:

  • 删除config.xml 文件中的任何图标或启动屏幕引用;
  • splash.png 和/或icon.png 文件放入您的cordova 项目的www/resources 文件夹中;那么,
  • 运行ionic cordova resources --iconionic cordova resources --splash 命令

这将为您创建所有正确的启动/图标文件并将它们添加到config.xml 文件中。该警告随即消失。

希望这行得通!

【讨论】:

  • 我使用的是cordova而不是离子,所以我不能运行任何“离子资源”
  • 谢谢,我遇到了这个问题。
  • @csga5000 您可以在构建时使用离子工具。您不必为此包含客户端库。
  • @FrodmanG 我相信我做了一些事情,比如删除图标/飞溅的配置,删除/添加我的 ios 平台,然后更正图标/飞溅的配置。对于有类似问题的人,我建议的一件事是在 xcode 中打开平台并检查一切看起来是否正确并且在 xcassets 文件中具有有效的文件路径。
  • @csga5000 - 你可以用cordova做同样的事情:首先安装cordova-splash和cordova-icon (npm install -g cordova-splash cordova-icon),然后在你的根目录中创建你的icon.png和splash.png cordova 项目(即 /www 上方的目录),然后运行它们(cordova-icon ; cordova-splash),所有正确的图标和启动图像将在 /platforms 下的正确区域中创建。 (请注意,您需要安装 ImagicMagic)。标志性的命令只是包装了这些相同的 npm 模块。
【解决方案2】:

我会推荐使用 cordova-icon 和 cordova-splash npm 包。这是因为您可以将两个图像放在您的根目录中,然后命令将为您解决其余的问题。它们是由 cordova 编写的,您可以使用以下方式安装:

npm install -g cordova-icon
npm install -g cordova-splash

然后只需将 1024x1024 版本的徽标作为“icon.png”放入项目根目录中。并且:

"初始屏幕图像应为 2208x2208 像素,中心正方形为 大约 1200x1200 像素。图像可能会在中心方块周围被裁剪。”

https://www.npmjs.com/package/cordova-splash

只需将与该描述匹配的图像作为“splash.png”放在项目根目录中

删除 config.xml 中指定用于 ios 的图像的任何行,cordova-icon/splash 会自动将它们以正确的名称放在正确的位置,以便 xcode 识别它们。

完成设置后,只需执行以下命令:

cordova platform remove ios
cordova platform add ios
cordova-icon
cordova-splash

然后运行您的构建命令。对我来说是:

cordova build ios --build-config

但是您可能没有构建配置,或者需要额外的参数。如果构建失败(确保运行命令,即使您认为它会失败 - 它会设置)只需在 xcode 中的平台/ios 中打开生成的工作区,清理项目并构建。应该可以的。

【讨论】:

  • 注意一个错误:在 OSX 上,还需要安装 imagemagick 才能使 cordova-icon 或 cordova-splash 正常工作。我遇到的错误必须安装 imagemagick was answered here。这还需要将 HomeBrew 安装到 imagemagick,这可以通过在终端中输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" Which I found on the HomeBrew site here 来完成。希望这对某人有所帮助。
  • 我认为 Cordova 没有那么活跃了,因为跨平台移动开发有更好的替代品,比如 Flutter、Xamarin 和 React Native。回到科尔多瓦项目,科尔多瓦图标似乎与更新的科尔多瓦不兼容。 (这反过来又不能很好地与更新的 iOS 一起玩,我不得不禁用现代构建系统)
【解决方案3】:
  1. 重命名平台/ios
  2. 终端类型:cordova platform add ios
  3. cordova build ios.

为我工作

【讨论】:

  • 第二点出现错误。它的cordova平台添加了ios。
  • 如果 1 建议重命名目录平台/ios 我没有尝试过。但是,我尝试了cordova platform remove ios,但这并没有解决问题。我什至尝试过创建一个新项目并添加它。我发现的唯一解决方法是从配置文件中注释徽标行,然后删除/添加平台。
【解决方案4】:

对于单独的 icon.png 文件,图像必须为 1024x1024 才能在 config.xml 中使用单独的 &lt;icon src="icon.png"/&gt; >.

我必须使用 cordova-cli 6.5.0cordova-ios 4.5.1xcodebuild 9.0

【讨论】:

  • 谢谢,这行得通!这是否记录在任何地方,或者这是一个未知的 Cordova 错误?
  • 4 年前的事了,记不得了:-S
【解决方案5】:

我在使用cordova-icon 时收到此错误,但我的icon.png 图像不是方形的。

icon.png 更改为方形图像并重新执行cordova-icon 意味着cordova build ios 现在对我有用。

【讨论】:

  • 这不是我的问题,实际上我是在一两天前才发现cordova-icon的,没有问题。但也许对某些人仍然有用。谢谢克里斯
【解决方案6】:

我尝试过的简单解决方案是添加正确大小的图像 1024x1024

   <platform name="ios">
        <icon src="res/icon-1024.png" />
    </platform>

【讨论】:

    【解决方案7】:

    在深入研究 cordova_lib 之后,我认为(对我而言)很清楚,cordova 不应该为您调整图标大小,而只能在它们存在且尺寸正确时复制它们。

    在 cordova-lib\src\cordova\metadata\ios_parser.js 中查看此代码:

    // See https://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/LaunchImages.html
    // for launch images sizes reference.
    var platformIcons = [
        {dest: 'icon-60.png', width: 60, height: 60},
        {dest: 'icon-60@2x.png', width: 120, height: 120},
        {dest: 'icon-60@3x.png', width: 180, height: 180},
        {dest: 'icon-76.png', width: 76, height: 76},
        {dest: 'icon-76@2x.png', width: 152, height: 152},
        {dest: 'icon-small.png', width: 29, height: 29},
        {dest: 'icon-small@2x.png', width: 58, height: 58},
        {dest: 'icon-40.png', width: 40, height: 40},
        {dest: 'icon-40@2x.png', width: 80, height: 80},
        {dest: 'icon.png', width: 57, height: 57},
        {dest: 'icon@2x.png', width: 114, height: 114},
        {dest: 'icon-72.png', width: 72, height: 72},
        {dest: 'icon-72@2x.png', width: 144, height: 144},
        {dest: 'icon-50.png', width: 50, height: 50},
        {dest: 'icon-50@2x.png', width: 100, height: 100}
    ];
    
    var destIconsFolder, destSplashFolder;
    var xcassetsExists = folderExists(path.join(platformRoot, 'Images.xcassets/'));
    
    if (xcassetsExists) {
        destIconsFolder = 'Images.xcassets/AppIcon.appiconset/';
    } else {
        destIconsFolder = 'Resources/icons/';
    }
    
    platformIcons.forEach(function (item) {
        var icon = icons.getBySize(item.width, item.height) || icons.getDefault();
        if (icon){
            var src = path.join(appRoot, icon.src),
                dest = path.join(platformRoot, destIconsFolder, item.dest);
            events.emit('verbose', 'Copying icon from ' + src + ' to ' + dest);
            shell.cp('-f', src, dest);
        }
    });
    

    最好的选择似乎是使用一个通过钩子为您调整大小的插件。查看 Generating iOS and Android icons in Cordova / PhoneGaphttps://github.com/disusered/cordova-icon-gm 以获取同一插件的新版本,更加面向未来(目录中的挂钩在 6.x 中已弃用)。

    【讨论】:

      【解决方案8】:

      我设法通过删除 config.xml 中的非故事板启动引用解决了这个问题,最新版本的科尔多瓦似乎只使用故事板:

      所以删除:

          <splash src="res/ios/splash/Default~iphone.png" width="320" height="480"/>
          <splash src="res/ios/splash/Default@2x~iphone.png" width="640" height="960"/>
          <splash src="res/ios/splash/Default-Portrait~ipad.png" width="768" height="1024"/>
          <splash src="res/ios/splash/Default-Portrait@2x~ipad.png" width="1536" height="2048"/>
          <splash src="res/ios/splash/Default-Landscape~ipad.png" width="1024" height="768"/>
          <splash src="res/ios/splash/Default-Landscape@2x~ipad.png" width="2048" height="1536"/>
          <splash src="res/ios/splash/Default-568h@2x~iphone.png" width="640" height="1136"/>
          <splash src="res/ios/splash/Default-667h.png" width="750" height="1334"/>
          <splash src="res/ios/splash/Default-736h.png" width="1242" height="2208"/>
          <splash src="res/ios/splash/Default-Landscape-736h.png" width="2208" height="1242"/>
      

      只保留这些:

              <splash src="res/ios/splash/Default@2x~iphone~anyany.png" />
              <splash src="res/ios/splash/Default@2x~iphone~comany.png" />
              <splash src="res/ios/splash/Default@2x~iphone~comcom.png" />
              <splash src="res/ios/splash/Default@3x~iphone~anyany.png" />
              <splash src="res/ios/splash/Default@3x~iphone~anycom.png" />
              <splash src="res/ios/splash/Default@3x~iphone~comany.png" />
              <splash src="res/ios/splash/Default@2x~ipad~anyany.png" />
              <splash src="res/ios/splash/Default@2x~ipad~comany.png" />
      

      【讨论】:

        【解决方案9】:

        这不是一个困难的错误。唯一要做的就是删除所有带有

        的行

        Images.xcastsets

        来自

        平台/ios/.xcodeproject

        然后删除platform ionic cordova platform rm ios, 再次添加平台并构建。

        ionic cordova 平台添加 ios

        ionic cordova build ios

        【讨论】:

        • 我很感激这可能为您解决了一个问题,但我不认为这是 OP 的解决方案,因为该问题与不正确或缺少合适的图标和闪屏图像有关.我遇到了同样的问题,并且在第一次构建时遇到了这个错误,所以当时没有 platform/ios 文件夹!
        【解决方案10】:

        我遇到了与 OP 相同的问题,虽然接受的答案是正确且有用的,但现在 npm 上有一个更新(和维护)的资源生成器,称为 cordova-res,它取代了 cordova-icon 和 cordova-splash。此外,所需的初始屏幕尺寸也有所增加。您需要的所有详细信息都在npmjs cordova-res page 上,我从中获取了以下信息。

        安装方式:

        npm install -g cordova-res 
        

        您需要准备好 icon.png 和 splash.png(网站上说 JPEG 或 PNG)图像。这些需要具有以下维度:

        icon.(png|jpg) 必须至少为 1024 × 1024px

        splash.(png|jpg) 必须至少为 2732 × 2732px(注意增大的尺寸)

        只是关于启动画面的一点旁注。您的图像需要位于初始屏幕的中心,以便在不裁剪初始屏幕图像的情况下生成不同的矩形设备大小的图像。正如公认的答案所说,此中心图像的大小需要约为 1200 x 1200 像素。

        将这些图像放在项目的资源文件夹中:

        resources/
        ├── icon.png
        └── splash.png
        

        在您生成资源之前,可能值得删除并添加您的 ios 平台(以及其他如果您也在构建它们)以从一个干净的平台文件夹开始。我不确定这是否有必要。

        cordova platform remove ios
        cordova platform add ios
        

        运行以下命令生成资源:

        $ cordova-res
        

        然后你就可以构建你的平台了:

        cordova build ios
        

        现在一切都应该好了,希望能解决您的 xcassets 错误,就像对我一样。

        【讨论】:

        • 只是想注意这个包只适用于节点> = 10.3.0
        猜你喜欢
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        • 2014-03-05
        • 2020-07-11
        • 1970-01-01
        • 2020-09-13
        • 2014-11-11
        • 2016-04-02
        相关资源
        最近更新 更多