web-dev-qa-db-fra.com

Cordova ios error building Images.xcassets

J'ai passé beaucoup de temps à essayer de résoudre ce problème en vain.

J'ai mis à jour cordova et depuis el capitan mon mac a maintenant des problèmes avec NPM et cordova.

Je l'ai fait installer mais je dois utiliser Sudo pour cordova maintenant.

I essayé ce qui suit:

Sudo cordova platform remove ios
Sudo cordova platform add ios
Sudo cordova build ios

Et cela me donne ce qui suit sortie:

** 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

Version Cordova

Sudo cordova -v
6.0.0

Mise à jour: je lance maintenant 6.1.1, toujours le même problème

Version de la plate-forme Cordova iOS

Sudo cordova platform ios -v
6.1.1

Version Mac: 10.11.3
Version XCode: 7.2.1

27
csga5000

Je recommanderais d'utiliser les packages npm cordova-icon et cordova-splash. C'est parce que vous pouvez simplement mettre deux images dans votre racine, puis les commandes travailleront pour le reste. Ils sont écrits par cordova, et vous pouvez installer en utilisant:

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

Ensuite, mettez simplement une version 1024x1024 de votre logo en tant que "icon.png" dans la racine du projet. Et:

"L'image de l'écran de démarrage doit être de 2208x2208 px avec un carré central d'environ 1200x1200 px. L'image peut être rognée autour du carré central."

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

Mettez simplement une image correspondant à cette description dans la racine du projet en tant que "splash.png"

Supprimez toutes les lignes dans config.xml qui spécifient les images à utiliser pour ios, cordova-icon/splash les placera automatiquement au bon endroit avec les bons noms afin que xcode les reconnaisse.

Une fois que vous avez cette configuration, exécutez simplement ces commandes:

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

Exécutez ensuite votre commande build. Pour moi c'est:

cordova build ios --build-config

Mais il se peut que vous n'ayez pas de configuration de construction ou que vous ayez besoin de paramètres supplémentaires. Si la construction échoue (assurez-vous d'exécuter la commande même si vous pensez qu'elle échouera - cela configurera les choses), ouvrez simplement l'espace de travail généré dans les plates-formes/ios dans xcode, nettoyez le projet et générez. Cela devrait fonctionner.

5
csga5000

J'ai réussi à résoudre ce problème en:

  • en supprimant toute icône ou référence d'écran de démarrage dans le config.xml fichier;
  • mettre un splash.png et/ou icon.png fichiers dans le www/resources dossier de votre projet cordova; puis,
  • exécutez le ionic cordova resources --icon ou ionic cordova resources --splash commande

cela va créer tous les fichiers splash/icône corrects pour vous et les ajouter au config.xml fichier. Cet avertissement disparaît alors.

J'espère que cela fonctionne!

32
FrodmanG
  1. Renommer la plate-forme/iOS
  2. sur le type de terminal: cordova platform add ios
  3. cordova build ios.

travaillé à mon cas

7
Shashank Saxena

J'ai eu cette erreur lorsque j'utilisais cordova-icon mais mon icon.png l'image n'était pas carrée.

Changer le icon.png à une image carrée et refaire cordova-icon signifie que cordova build ios fonctionne maintenant pour moi.

2
kris

Après avoir creusé dans cordova_lib, je pense qu'il est clair (pour moi) que cordova n'est pas censé redimensionner l'icône pour vous, mais seulement les copier si elles existent et ont les bonnes dimensions.

Voir ce code dans 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: '[email protected]', width: 120, height: 120},
    {dest: '[email protected]', width: 180, height: 180},
    {dest: 'icon-76.png', width: 76, height: 76},
    {dest: '[email protected]', width: 152, height: 152},
    {dest: 'icon-small.png', width: 29, height: 29},
    {dest: '[email protected]', width: 58, height: 58},
    {dest: 'icon-40.png', width: 40, height: 40},
    {dest: '[email protected]', width: 80, height: 80},
    {dest: 'icon.png', width: 57, height: 57},
    {dest: '[email protected]', width: 114, height: 114},
    {dest: 'icon-72.png', width: 72, height: 72},
    {dest: '[email protected]', width: 144, height: 144},
    {dest: 'icon-50.png', width: 50, height: 50},
    {dest: '[email protected]', 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);
    }
});

La meilleure option semble être d'utiliser un plugin qui fait le redimensionnement pour vous avec des crochets. Découvrez Génération d'iOS et Android dans Cordova/PhoneGap ou https://github.com/disusered/cordova-icon-gm pour une nouvelle version plus évolutive du même plugin (les hooks dans les répertoires sont déconseillés dans 6.x).

1
geoathome

Pour un fichier solo icon.png, l'image doit être 1024x1024 pour pouvoir travailler avec un solo <icon src="icon.png"/> dans le config.xml.

Je dois cela avec cordova-cli 6.5.0 , cordova-ios 4.5.1 et xcodebuild 9.0 .

1
Nicolas Albert

La solution simple que j'ai essayée est d'ajouter la taille correcte de l'image 1024x1024

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

J'ai réussi à résoudre ce problème en supprimant les références de démarrage non-storyboard dans config.xml, la dernière version de cordova semble utiliser uniquement celles du storyboard:

Donc retiré:

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

Et gardé seulement ceux-ci:

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