我花了很多时间试图解决这个问题无济于事。
我使用了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
答案 0 :(得分:30)
我设法解决了这个问题:
config.xml
文件中的任何图标或启动画面引用; splash.png
和/或icon.png
个文件放入您的cordova项目的www/resources
文件夹中;然后,ionic cordova resources --icon
或ionic cordova resources --splash
命令这将为您创建所有正确的splash / icon文件,并将它们添加到config.xml
文件中。那警告就消失了。
希望这有效!
答案 1 :(得分:7)
cordova platform add ios
cordova build ios
。在我的案子中工作
答案 2 :(得分:5)
我建议使用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中的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 / PhoneGap或https://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错误。