web-dev-qa-db-ja.com

CordovaビルドiOSエラー:パス 'path / to / myApp.xcarchive'でアーカイブが見つかりません

Cordovaを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を使用しています。

52
TheeBen

here の回避策があります。

コマンドラインでビルドする場合は、-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でプロジェクトを開いている場合、ワークスペース設定のビルドシステムを「レガシービルドシステム」に変更する必要があります。

134
Samuel Hsieh

どちらのソリューション---buildFlag="-UseModernBuildSystem=0"もLegacy Build Systemの設定もうまくいきませんでした。

何らかの理由で、cordovaビルドコマンドを実行する前に、iPadまたはiPhoneをコンピューターのUSBから確実に取り外した場合にのみ、エラーが消えます。

私の設定について何か奇妙なことかもしれませんが、他の人に役立つ場合に備えて共有したいと思いました。

41
jessica

Cordova iOSは、5.0.0以降の新しいビルドシステムをサポートしています( リリースノート を参照)。

したがって、package.jsonを"cordova-ios": "5.0.0"(またはそれ以降)に更新し、npm installを呼び出します。

それが機能するためには、その後すべてを削除する必要があることに注意してください(ディレクトリプラットフォーム、プラグイン、wwwを削除します)。

4
nharrer

常にビルドフラグに設定したくない場合は、MyApp.xcworkspaceを開いて次の場所に移動します。

Sidenote:はい、常にCordovaにiosプラットフォームを追加してこれを行う必要があります。 (例:iOSプラットフォームを削除して再度追加した)

ファイル>ワークスペースの設定>ビルドシステムの選択:レガシービルドシステム

enter image description here

3
Stefan Rein

これは、Macに接続されたデバイスでcordova ios build --prodを実行した場合にも発生します。プラグを抜き、もう一度試してください。

0
Jelmer Jellema