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を使用しています。
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でプロジェクトを開いている場合、ワークスペース設定のビルドシステムを「レガシービルドシステム」に変更する必要があります。
どちらのソリューション---buildFlag="-UseModernBuildSystem=0"
もLegacy Build Systemの設定もうまくいきませんでした。
何らかの理由で、cordovaビルドコマンドを実行する前に、iPadまたはiPhoneをコンピューターのUSBから確実に取り外した場合にのみ、エラーが消えます。
私の設定について何か奇妙なことかもしれませんが、他の人に役立つ場合に備えて共有したいと思いました。
Cordova iOSは、5.0.0以降の新しいビルドシステムをサポートしています( リリースノート を参照)。
したがって、package.jsonを"cordova-ios": "5.0.0"
(またはそれ以降)に更新し、npm install
を呼び出します。
それが機能するためには、その後すべてを削除する必要があることに注意してください(ディレクトリプラットフォーム、プラグイン、wwwを削除します)。
これは、Macに接続されたデバイスでcordova ios build --prod
を実行した場合にも発生します。プラグを抜き、もう一度試してください。