Кордова строит ошибку iOS: архив не найден на пути "путь/в /myApp.xcarchive"

Я изо всех сил пытаюсь заставить Кордову работать и работать на моем iPhone. Я следую приведенным ниже командам, но вижу ошибку ниже при сборке:

cordova create myApp org.apache.cordova.myApp myApp
cd myApp
cordova platform add ios 
cordova build ios

Я получаю ошибку ниже:

Building project: /Users/ben/Desktop/myTest/platforms/ios/myTest.xcworkspace
    Configuration: Debug
    Platform: device
User defaults from command line:
    IDEArchivePathOverride = /Users/ben/Desktop/myTest/platforms/ios/myTest.xcarchive

Build settings from command line:
    CONFIGURATION_BUILD_DIR = /Users/ben/Desktop/myTest/platforms/ios/build/device
    SHARED_PRECOMPS_DIR = /Users/ben/Desktop/myTest/platforms/ios/build/sharedpch

Build settings from configuration file '/Users/ben/Desktop/myTest/platforms/ios/cordova/build-debug.xcconfig':
    CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES
    CODE_SIGN_ENTITLEMENTS = $(PROJECT_DIR)/$(PROJECT_NAME)/Entitlements-$(CONFIGURATION).plist
    CODE_SIGN_IDENTITY = iPhone Developer
    ENABLE_BITCODE = NO
    GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1
    HEADER_SEARCH_PATHS = "$(TARGET_BUILD_DIR)/usr/local/lib/include" "$(OBJROOT)/UninstalledProducts/include" "$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include" "$(BUILT_PRODUCTS_DIR)"
    OTHER_LDFLAGS = -ObjC
    SWIFT_OBJC_BRIDGING_HEADER = $(PROJECT_DIR)/$(PROJECT_NAME)/Bridging-Header.h

error: archive not found at path '/Users/ben/Desktop/myTest/platforms/ios/myTest.xcarchive'
** EXPORT FAILED **

(node:4984) UnhandledPromiseRejectionWarning: Error code 65 for command: xcodebuild with args: -exportArchive,-archivePath,myTest.xcarchive,-exportOptionsPlist,/Users/ben/Desktop/myTest/platforms/ios/exportOptions.plist,-exportPath,/Users/ben/Desktop/myTest/platforms/ios/build/device
(node:4984) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:4984) [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.

Я попытался удалить и добавить платформы. Кроме того, деинсталляция.

Я нахожусь на macOS High Sierra и Xcode 10.

Ответ 1

Существует работа вокруг здесь.

Если вы строите на командной строке, вы можете указать --buildFlag = "-UseModernBuildSystem = 0":

# Cordova CLI
cordova run ios --buildFlag='-UseModernBuildSystem=0'
cordova build ios --buildFlag='-UseModernBuildSystem=0'

# Ionic CLI
ionic cordova run ios -- --buildFlag="-UseModernBuildSystem=0"
ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"

Если вы строите файл конфигурации build.json, вы можете добавить следующее в конфигурацию релиза iOS или отладки:

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

Если вы открываете проект в Xcode IDE, вам необходимо изменить систему сборки в настройках рабочей области на "Legacy Build System",

Ответ 2

Ни одно из решений - --buildFlag="-UseModernBuildSystem=0" или установка устаревшей системы сборки не сработало для меня.

По какой-то причине ошибка исчезнет, только если я обязательно отключу iPad или iPhone от usb на моем компьютере перед выполнением команды сборки cordova.

Может быть, что-то странное в моей конфигурации, но я подумал, что поделюсь, если это кому-нибудь поможет.

Ответ 3

Прежде всего спасибо @Samual Hsieh за помощь. В прошлый вторник я использовал ваши командные строки Ionic CLI и создал рабочий файл.xcodeproj. Теперь я изменил некоторые страницы и хотел снова выполнить ту же команду:

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

К сожалению, сейчас я получаю те же ошибки:

error: archive not found at path '/Users/xx/Documents/GitHub/xx-xx/platforms/ios/xxapp.xcarchive'
** EXPORT FAILED **

(node:1211) UnhandledPromiseRejectionWarning: Error code 65 for command: xcodebuild with args: -exportArchive,-archivePath,xxapp.xcarchive,-exportOptionsPlist,/Users/xx/Documents/GitHub/xx-xx/platforms/ios/exportOptions.plist,-exportPath,/Users/xx/Documents/GitHub/xx-xx/platforms/ios/build/device
(node:1211) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:1211) [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.

Я попытался удалить и добавить платформы. Я на Xcode 10

Ответ 4

Cordova iOS поддерживает новую систему сборки начиная с 5.0.0 (см. примечания к выпуску).

Поэтому обновите файл package.json до "cordova-ios": "5.0.0" (или позже) и позвоните в npm install.

Обратите внимание, что для того, чтобы это работало, мне пришлось впоследствии все очистить (удалить платформы каталогов, плагины, www).

Ответ 5

Если вы не хотите все время устанавливать его в флаге сборки, откройте MyApp.xcworkspace и перейдите по адресу:

Sidenote: Да, вы должны делать это постоянно, добавляя платформу ios в cordova. (например, вы удалили и снова добавили платформу ios)

Файл> Настройки рабочего пространства> Выбрать для системы сборки: Старая система сборки

enter image description here

Ответ 6

Это также происходит, когда вы запускаете cordova ios build --prod с устройством, подключенным к вашему Mac. Отключите и попробуйте снова.