Невозможно построить проект для iOS от cordova cli
Я создал проект с использованием Cordova CLI версии 3.5.0.
Я успешно развернул проект для платформы Android с помощью CLI.
cordova run android
Однако у меня возникла проблема с развертыванием проекта для iOS.
cordova run ios
Я столкнулся с этой ошибкой:
mv: dest file already exists: /Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MyPKS-Info.plist
mv: dest file already exists: /Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MyPKS-Prefix.pch
shell.js: internal error
Error: EINVAL, invalid argument '/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS.xcodeproj'
at Object.fs.renameSync (fs.js:543:18)
at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:495:8
at Array.forEach (native)
at Object._mv (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:471:11)
at Object.mv (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:1491:23)
at pbxProject. (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:126:27)
at pbxProject.EventEmitter.emit (events.js:98:17)
at pbxProject. (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/xcode/lib/pbxProject.js:30:18)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at handleMessage (child_process.js:322:10)
Эта проблема возникает только после того, как я впервые запустил проект Xcode, чтобы добавить значок и заставку, поскольку значок и заставки не добавляются автоматически в проект, хотя он объявлен в файле config.xml.
Я попытался удалить файл Info.plist и Prefix.pch, но затем появилась эта ошибка.
Error: ENOENT, no such file or directory '/Users/amirfazwan/Documents/workspace/MyPKS/platforms/ios/MYPKS/MYPKS-Info.plist'
at Object.fs.openSync (fs.js:427:18)
at Object.fs.readFileSync (fs.js:284:15)
at Object.exports.parseFileSync (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/plist-with-patches/lib/plist.js:18:19)
at Object.module.exports.update_from_config (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:66:31)
at Object.module.exports.update_project (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ios_parser.js:189:21)
at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/prepare.js:113:31
at _fulfilled (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:798:54)
at self.promiseDispatch.done (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:827:30)
at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:760:13)
Проект работает отлично, если он запущен с Xcode, но я больше не могу строить проект из CLI или запускать команду "serve" из CLI для цели отладки.
Прошу вас, спасибо.
решаемые
Решено путем переименования имени проекта с помощью Xcode. Спасибо Джейсону за советы.
![wwwww]()
Ответы
Ответ 1
Я тоже боролся с этим. Наконец нашел решение путем проб и ошибок. D:
То, что произошло для меня, - это переименование названия проекта, чтобы иметь капиталы. Это вызвало всевозможные путаницы для Кордовы.
Первое, что я сделал, это переименование проблемных файлов plist и pch для соответствия правильной капитализации. Итак, в вашем случае, если это был myPKS, но теперь это MyPKS, вам нужно переименовать файлы в MyPKS-Info.plist и MyPKS-Prefix.pch.
Затем мне пришлось переименовать .xcodproj для соответствия капитализации.
После этого произошла еще одна проблема:
xcodebuild: ошибка: проект "NewName.xcodeproj" не содержит цель с именем "NewName".
Чтобы решить эту проблему, мне пришлось переименовать цель, чтобы иметь соответствующую капитализацию. Поскольку я новичок в iOS dev, я не знаю, как описать, как туда добраться. Я только что наткнулся на это, сделал изменения, и это сработало!
Удачи!
Ответ 2
Просто удалите платформы, а затем добавьте их снова.
cordova platform rm ios
cordova platform rm android
cordova platform add ios
cordova platform add android
Ответ 3
Что я решил решить, выполнив следующие
- Удаление платформы ios; ионная платформа удалить ios
- Удаление платформы Android; ионная платформа удалить андроид
- Добавление платформы Ios назад; ионная платформа add ios
- Добавление платформы Android назад; ионная платформа add android
- Rebuild; ионная сборка
Надеюсь, это поможет кому угодно.
Ответ 4
Ответ Джейсона Кокса помог мне, но я не переименовал файлы, мне просто нужно было изменить имя приложения в файле config.xml
<name>myApp</name>
к
<name>myApp</name>
Ответ 5
Это работало в Meteor 1.3.x
Удалите определенную платформу и снова добавьте команду meteor
через консоль.
Например,
![введите описание изображения здесь]()
meteor list-platforms
meteor remove-platform ios
meteor add-platform ios
Ответ 6
У меня такая же ошибка. Причина, по которой это случилось со мной, заключалось в том, что я изменил имя в xml от myapp до MyApp. Он снова работал, когда я изменил его на прежнее имя.
Переименование в xcode также работало так, спасибо за это.