web-dev-qa-db-fra.com

Erreur iOS de création de Cordova: archive introuvable dans le chemin 'chemin / vers / monApp.xcarchive "

J'ai eu du mal à faire fonctionner Cordova sur mon iPhone. Je suis les commandes ci-dessous mais vois l'erreur ci-dessous lors de la construction:

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

Je reçois l'erreur ci-dessous:

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.

J'ai essayé de supprimer et d'ajouter des plates-formes. Aussi, désinstaller des choses aussi.

Je suis sur macOS High Sierra et Xcode 10.

52
TheeBen

Il y a un travail autour ici .

Si vous construisez sur la ligne de commande, vous pouvez spécifier --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"

Si vous construisez avec un fichier de configuration build.json, vous pouvez ajouter les éléments suivants sous la version iOS ou la configuration de débogage:

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

Si vous ouvrez le projet dans l'EDI Xcode, vous devez modifier le système de construction dans les paramètres de l'espace de travail en "Système de construction hérité".

134
Samuel Hsieh

Ni la solution - --buildFlag="-UseModernBuildSystem=0" ni la configuration du système de construction hérité ne fonctionnaient pour moi.

Pour une raison quelconque, l'erreur ne disparaît que si je suis sûr de débrancher mon iPad ou mon iPhone du port USB de mon ordinateur avant d'exécuter la commande cordova build.

Peut-être que quelque chose de bizarre sur ma configuration, mais je pensais partager au cas où cela aiderait quelqu'un d'autre.

41
jessica

Cordova iOS prend en charge le nouveau système de génération depuis la version 5.0.0 (voir notes de version ).

Mettez donc votre package.json à jour sur "cordova-ios": "5.0.0" (ou une version ultérieure) et appelez npm install.

Notez que je devais tout nettoyer ensuite (supprimer les répertoires plateformes, plugins, www) pour que cela fonctionne.

4
nharrer

Si vous ne voulez pas le définir constamment dans l'indicateur de construction, ouvrez votre MyApp.xcworkspace et accédez à:

Sidenote : Oui, vous devez le faire tout le temps en ajoutant la plate-forme ios à cordova. (par exemple, vous avez supprimé et ajouté à nouveau la plate-forme ios)

Fichier> Paramètres de l'espace de travail> Choisir un système de construction: Système de construction hérité

enter image description here

3
Stefan Rein

Cela se produit également lorsque vous exécutez cordova ios build --prod avec un périphérique connecté à votre mac. Débranchez et essayez à nouveau.

0
Jelmer Jellema