Cordova ios错误构建Images.xcassets

时间:2016-03-18 23:15:44

标签: ios cordova npm

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

我使用了cordova,因为我的mac现在遇到了NPM和cordova的问题。

我已经安装了,但我现在必须使用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

Cordova版

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

10 个答案:

答案 0 :(得分:30)

我设法解决了这个问题:

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

这将为您创建所有正确的splash / icon文件,并将它们添加到config.xml文件中。那警告就消失了。

希望这有效!

答案 1 :(得分:7)

  1. 重命名平台/ ios
  2. 终端类型
  3. cordova platform add ios
  4. cordova build ios
  5. 在我的案子中工作

答案 2 :(得分:5)

我建议使用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中的platforms / ios中打开生成的工作区,清理项目并构建。这应该有用。

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

在深入了解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中已弃用)。

答案 5 :(得分:1)

对于个人 icon.png 文件,图片必须 1024x1024 ,才能在 config.xml <中使用独奏<icon src="icon.png"/> /强>

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

答案 6 :(得分:0)

我设法通过删除config.xml中的非故事板启动引用来解决此问题,最新版本的cordova似乎只使用了故事板:

已删除:

    <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" />

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

这不是一个困难的错误。只需要做的就是用

删除所有行。
  

Images.xcastsets

来自

  

platform / ios / .xcodeproject

然后删除平台离子Cordova平台rm ios, 再次添加平台并构建。

  

ionic cordova平台添加ios

     

离子Cordova构建iOS

答案 9 :(得分:0)

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

安装方式:

npm install -g cordova-res 

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

图标。(png | jpg)必须至少为1024×1024px

飞溅。(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错误。