Ошибка Ionic ios, архив ошибок не найден

Я пытался понять это, но в конце туннеля, похоже, нет света, поэтому он пытается здесь... надеюсь, что вы сможете помочь.

У меня есть ионный проект. Запуск через ionic serve дает мне результат, которого я ожидаю, без проблем. Однако при запуске команды, такой как ionic cordova run ios -lc, я получаю ошибку, нарушающую процесс сборки. Ошибка, которую я получаю, следующая:

[cordova] error: archive not found at path '/Users/path-to-app/platforms/ios/demoapp.xcarchive' [cordova] ** EXPORT FAILED ** [cordova] [cordova] (node:5866) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error code 65 for command: xcodebuild with args: -exportArchive,-archivePath,demoapp.xcarchive,-exportOptionsPlist,/Users/path-to-app/platforms/ios/exportOptions.plist,-exportPath,/Users/path-to-app/platforms/ios/build/device [cordova] (node:5866) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Здесь я вижу две разные ошибки: архив не найден и проблема с устаревшими. Не знаю, кто нарушает сборку, но не может найти решение для одного из них.

Ионная информация:

Ionic:

   ionic (Ionic CLI)  : 4.1.2
   Ionic Framework    : ionic-angular 3.9.2
   @ionic/app-scripts : 3.2.0

Cordova:

   cordova (Cordova CLI) : 8.0.0
   Cordova Platforms     : android 7.0.0, browser 5.0.4, ios 4.5.5
   Cordova Plugins       : no whitelisted plugins (0 plugins total)

System:

   Android SDK Tools : 25.1.7 (/Users/Vincent/Library/Android/sdk)
   ios-deploy        : 1.9.2
   NodeJS            : v9.1.0 (/usr/local/bin/node)
   npm               : 6.4.1
   OS                : macOS High Sierra
   Xcode             : Xcode 10.0 Build version 10A255

Любая помощь будет оценена!

Ответ 1

В настоящее время cordova-ios несовместим с Xcode 10

Вы можете попытаться отключить новую систему сборки, которую использует Xcode 10, и использовать старую, добавив ее в файл build.json

"buildFlag": [
  "-UseModernBuildSystem=0"
]

или добавление --buildFlag="-UseModernBuildSystem=0" к команде сборки

Полная команда должна быть cordova build ios --buildFlag="-UseModernBuildSystem=0".

Или для ионной ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"

Ответ 2

В дополнение к вышеуказанному ответу, предоставленному @jcesarmobile, другим решением является создание приложения с Ionic CLI, выполнив следующую команду:

ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"

В соответствии с документацией по ionic build команды, передать дополнительные параметры в Кордова CLI вы должны использовать -- разделитель после аргументов Ионных CLI. Выполнение команды build через Ionic CLI вместо CLI Cordova также будет создавать сетевые ресурсы и обеспечивать дружеские проверки, прежде чем кордова просто создаст приложение.

Ответ 3

Пример для рабочего build.json (для размещения в корневом каталоге кордовой/ионной программы) - это следующий контент:

 {
  "ios": {
    "debug": {
      "buildFlag": [
        "-UseModernBuildSystem=0"
      ]
    },
    "release": {
      "buildFlag": [
        "-UseModernBuildSystem=0"
      ]
    }
  }
}

Дополнительные сведения о build.json см. Также в документе cordova doc: https://cordova.apache.org/docs/en/latest/guide/platforms/ios/

Ответ 4

Команда, предложенная jcesarmobile, не работает для меня, но делает

cordova build ios --buildFlag="-UseModernBuildSystem=0"

(без иона) успешно завершил сборку.

После этого я смог сделать Ion Cordova build IOS без проблем. (даже без buildFlag). Я не эксперт в этом, на самом деле было ошибкой не включать ионный LOL. Таким образом, хотя все, кажется, работает хорошо, я не уверен, есть ли какие-либо недостатки в строительстве только с кордовой в первый раз. Может быть, кто-то может пролить свет на комментарии

Ответ 5

Надеюсь, это все еще полезно.

Несколько ловушек: подготовка файла XCODE.

Пришло время подготовить проект к открытию в XCODE. Однако Ionic-Cordova не поддерживает НОВУЮ систему сборки XCODE. Таким образом, проект должен быть подготовлен для системы сборки Legacy. Подводный камень № 2. Важный! Отключите устройство iPhone или iPad, подключенное к Mac, или следующая команда не будет работать !!! Ловушка № 3.

ionic cordova build ios --prod --buildFlag='-UseModernBuildSystem=0'

Congrats! Ваш файл MyApp.xcodeproj(ect) готов. Вы почти на половину пути для загрузки IPA. Просто дважды щелкните файл Myapp.xcodeproj или откройте его через XCODE. Picture showing XCODE

Есть несколько других подводных камней, которые вы найдете:

  • Это типичный подводный камень # 4, чтобы не иметь надлежащих привилегий. В В частности, "Разработчик" (Pitfall # 4.1) не имеет привилегий. отправить приложения в магазин
  • Дважды проверьте, что "Идентификатор пакета" является именно тем, который вы установили в файле config.xml!
  • В XCODE обнаружена ошибка подписи Pitfall # 5, поэтому снимите флажок "Автоматически управлять подписью" и снова отметьте. Вы обязательно столкнетесь с этой ошибкой.

Ошибки XCODE и неправильная поддержка Cordova новой системы здания приводят ко всем этим проблемам. Я сделал полное руководство, показывающее, как их исправить после долгих часов. Надеюсь, это поможет!

Ответ 6

В моем случае я должен указать версию компилятора swift и параметры рабочего пространства в XCODE 10.2.1

ПРИМЕЧАНИЕ: в моем проекте я установил плагин Onesignal

Сначала я указал версию компилятора swift.

  1. Откройте файл myproject-name.workspace, потому что установлены cocoapods.
  2. Перейдите на вкладку " Настройки сборки" в xcode.
  3. Прокрутите в самом низу вкладки настройки сборки и найдите Swift Compiler - Language.
  4. Выберите версию Swift из выпадающего меню Swift Language Version (например, Swift 4).

Затем измените настройку рабочего пространства

  1. Зайдите в Xcode File Menu
  2. Выберите настройки рабочего пространства
  3. Выберите Legacy Build System из выпадающего списка Build System.
  4. Нажмите Готово

А ведь попробуйте пересобрать следующую команду в терминале

ionic cordova build ios