[英]Cordova ios error building Images.xcassets
我花了很多时间试图解决这个问题,但无济于事。
我更新了cordova,自从el capan 我的mac 现在有NPM 和cordova 的问题。
我安装了它,但我现在必须对cordova 使用sudo。
我尝试了以下方法:
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
我设法通过以下方式解决了这个问题:
config.xml
文件中的任何图标或启动画面引用;splash.png
和/或icon.png
文件放在cordova 项目的www/resources
文件夹中; 那么,ionic cordova resources --icon
或ionic cordova resources --splash
命令这将为您创建所有正确的启动/图标文件并将它们添加到config.xml
文件中。 然后那个警告就消失了。
希望这有效!
我建议使用 cordova-icon 和 cordova-splash npm 包。 这是因为您可以在根目录中放置两个图像,然后命令将为您解决其余的问题。 它们由cordova编写,您可以使用以下方法安装:
npm install -g cordova-icon
npm install -g cordova-splash
然后在项目根目录中放置一个 1024x1024 版本的徽标作为“icon.png”。 并且:
“初始屏幕图像应为 2208x2208 像素,中心正方形约为 1200x1200 像素。图像可能会围绕中心正方形进行裁剪。”
只需将与该描述匹配的图像作为“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 中打开生成的工作区,清理项目,然后构建。 那应该工作。
cordova platform add ios
cordova build ios
。在我的情况下工作
对于单独的icon.png文件,图像必须是1024x1024才能在config.xml 中使用单独的<icon src="icon.png"/>
。
我必须使用cordova-cli 6.5.0 、 cordova-ios 4.5.1和xcodebuild 9.0 。
我在使用cordova-icon
时遇到了这个错误,但我的icon.png
图像不是方形的。
将icon.png
更改为方形图像并重新执行cordova-icon
意味着cordova build ios
现在适用于我。
我尝试过的简单解决方案是添加正确大小的图像 1024x1024
<platform name="ios">
<icon src="res/icon-1024.png" />
</platform>
在深入研究 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);
}
});
最好的选择似乎是使用一个插件,它通过钩子为你调整大小。 查看在 Cordova / PhoneGap或https://github.com/disusered/cordova-icon-gm 中生成 iOS 和 Android 图标以获取相同插件的新的更具前瞻性的版本(目录中的钩子在 6.x 中已弃用)。
我设法通过删除 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" />
这不是一个困难的错误。唯一要做的就是删除所有行
图像.xcastsets
来自
平台/ios/.xcodeproject
然后删除platform ionic cordova platform rm ios,再次添加platform,build。
离子cordova平台添加ios
离子科尔多瓦构建ios
我遇到了与 OP 相同的问题,虽然接受的答案是正确且有帮助的,但现在 npm 上有一个更新(和维护)的资源生成器,称为cordova-res,它取代了cordova-icon 和cordova-splash。 此外,所需的启动画面尺寸也增加了。 您需要的所有详细信息都在npmjs cordova-res 页面上,我从中获取了以下信息。
安装:
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 错误,就像对我所做的那样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.