web-dev-qa-db-fra.com

Impossible de construire le projet pour iOS à partir de cordova cli

J'ai créé un projet à l'aide de Cordova CLI, version 3.5.0.

J'ai déployé avec succès le projet pour la plate-forme Android à l'aide de la CLI.

cordova run Android

Toutefois, je ne parviens pas à déployer le projet pour iOS. 

cordova run ios

J'ai rencontré cette erreur:

 mv: le fichier de destination existe déjà: /Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MyPKS-Info.plist[.____. Printer.work./monPKS : /Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MyPKS-Prefix.pch
.____.]Shell.js: erreur interne 
 Erreur: EINVAL, argument invalide '/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS.xcodeproj'
 À Object.fs.renameSync (fs.js: 543: 18) 
 À/usr/local /lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/Shell.js:495:8
 sur Array.forEach (native) 
 sur Object._mv (/ usr/local /lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/Shell.js:471:11&&/.] à Object.mv (/ usr/local/lib/node_modules/cordova/node_modules/cordova). lib/node_modules/shelljs/Shell.js: 1491: 23) 
 sur pbxProject. (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:126:27)
 sur pbxProject.EventEmitter.emit (events.js: 98: 17) 
 Sur pbxProject. (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/xcode/lib/pbxProject.js:30:18)
 sur ChildProcess.EventEmitter.emit (events.js: 98: 17) 
 Dans handleMessage (child_process.js: 322: 10) 

Ce problème ne se produit qu'après avoir accédé manuellement au projet Xcode pour ajouter l'écran Icon & Splash, car les écrans Icon & Splash ne sont pas automatiquement ajoutés au projet, même s'ils ont été déclarés dans le fichier config.xml.

J'ai essayé de supprimer le fichier Info.plist & Prefix.pch, mais ensuite cette erreur est apparue.

 Erreur: ENOENT, aucun fichier ni répertoire de ce type '/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MYPKS-Info.plist'
 À Object.fs.openSync ( fs.js: 427: 18) 
 sur Object.fs.readFileSync (fs.js: 284: 15) 
 sur Object.exports.parseFileSync (/ usr/local/lib/node_modules/cordova /node_modules/cordova-lib/node_modules/plist-with-patches/lib/plist.js:18:19)
 à Object.module.exports.update_from_config (/ usr/local/lib/node/mod_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js: 66: 31) 
 dans Object.module.exports.update_project (/ usr/local/lib/node_modules/cordova/node_modules/cordova-lib /src/cordova/metadata/ios_parser.js:189:21)
 à /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/prepare.js:113:31 
 à _fulfilled (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:798:54)
 à self.promiseDispatch.done (/ usr/local/lib/node/node_modules /cordova/node_modules/q/q.js:827: 30) 
 Sur Promise.promise.promiseDispatch (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:760:13)

Le projet fonctionne très bien s'il est lancé à partir de Xcode, mais je ne peux plus construire le projet à partir de la CLI ni lancer la commande "serve" à partir de la CLI à des fins de débogage.

S'il vous plaît guidez-moi, merci.


RÉSOLU

Résolu en renommant le nom du projet en utilisant Xcode. Merci Jason pour les conseils.

wwwww

17
Amir Fazwan

EDIT: Essayez cette autre solution d'abord! Cela fonctionne pour la plupart des problèmes: https://stackoverflow.com/a/28300528/1250444

J'ai eu du mal avec cela aussi. Enfin trouvé une solution par essais et erreurs. RÉ:

Ce qui m'est arrivé, c’est de renommer le nom du projet en capitales. Cela a causé toutes sortes de confusion pour Cordova.

La première chose que j'ai faite a été de renommer les fichiers plist et pch problématiques pour qu'ils correspondent à la casse correcte. Donc, dans votre cas, s'il s'agissait de myPKS, mais qu'il s'agisse maintenant de MyPKS, vous devez renommer les fichiers en MyPKS-Info.plist et MyPKS-Prefix.pch.

J'ai ensuite dû renommer le .xcodproj pour correspondre à la capitalisation.

Après cela, un autre problème est apparu: Xcodebuild: error: le projet 'NewName.xcodeproj' ne contient pas de cible nommée 'NewName'.

Pour résoudre ce problème, je devais renommer la cible afin de disposer de la capitalisation appropriée. Depuis que je suis nouveau sur iOS dev, je ne sais pas comment décrire comment y arriver. Je suis finalement tombé sur lui, j'ai fait le changement et ça a fonctionné!

Bonne chance!

21
Jason Cox

Supprimez simplement les plates-formes, puis ajoutez-les à nouveau.

cordova platform rm ios
cordova platform rm Android
cordova platform add ios
cordova platform add Android
23
Chris S

Ce qui a résolu mon problème était le suivant

  1. Suppression de la plate-forme ios; plateforme ionique retirer ios
  2. Suppression de la plate-forme Android; plate-forme ionique supprimer Android
  3. Ajout de la plate-forme Ios en arrière; plate-forme ionique ajouter ios
  4. Ajout de la plate-forme Android en arrière; plate-forme ionique ajouter Android
  5. Reconstruire; construction ionique

J'espère que cela aide quelqu'un d'autre.

2
Vinchenzo

La réponse de Jason Cox m'a aidée - mais je n'ai renommé aucun fichier, je devais simplement changer le nom de l'application dans mon config.xml.

<name>myApp</name>

à

<name>MyApp</name>
1
Gerfried

Cela fonctionnait dans Meteor 1.3.x Supprimez une plate-forme particulière et rajoutez-la à nouveau via la commande meteor via la console. 

Par ex. 

 enter image description here

meteor list-platforms
meteor remove-platform ios
meteor add-platform ios
1
Gajen Sunthara

J'ai la même erreur. Cela m’est arrivé parce que j’ai changé le nom dans le xml de myapp à MyApp. Cela a encore fonctionné une fois que je l'ai changé pour revenir à l'ancien nom. Renommer en xcode a également fonctionné, alors merci pour cela.

0
Phrenesis