web-dev-qa-db-ja.com

Ionic iosビルドが失敗し、エラーアーカイブが見つかりません

私はこれを理解しようとしてきましたが、トンネルの終わりに光がないようですので、ここで試してみてください...あなたが助けてくれることを願っています。

Ionicプロジェクトがあります。 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.

ここに2つの異なるエラーが表示されます。アーカイブが見つからないことと非推奨の問題です。どれがビルドを壊しているのかわからないが、どちらの解決策も見つけられないようだ。

イオン情報:

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

助けていただければ幸いです!

48
Vincent

現在、cordova-iosはXcode 10と互換性がありません

Xcode 10が使用する新しいビルドシステムを無効にし、build.jsonファイルにこれを追加することで古いシステムを使用することができます。

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

または--buildFlag="-UseModernBuildSystem=0"をビルドコマンドに追加する

完全なコマンドはcordova build ios --buildFlag="-UseModernBuildSystem=0"である必要があります。

またはIonic ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"の場合

98
jcesarmobile

@jcesarmobileによる上記の回答に加えて、別の解決策は、次のコマンドを実行してIonic CLIを使用してアプリを構築することです。

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

ionic buildコマンドの documentation に従って、追加オプションをCordova CLIに渡すには、Ionic CLI引数の後に--セパレーターを使用する必要があります。 Cordova CLIの代わりにIonic CLIを介してbuildコマンドを実行すると、Web資産が構築され、cordovaがアプリを構築する前に友好的なチェックが提供されます。

27
AlexGpeppe

動作するbuild.jsonの例(cordova/ionicプロジェクトのルートディレクトリに配置する)は次のコンテンツです。

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

Build.jsonに関するその他のパラメーターについては、cordova docも参照してください。 https://cordova.Apache.org/docs/en/latest/guide/platforms/ios/

19
dgbt

jcesarmobileによって提案されたコマンドは機能しませんでしたが、

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

(イオンなし)ビルドが正常に完了しました。

その後、ionic cordova build iosを問題なく行うことができました。 (buildFlagがなくても)。私はこれの専門家ではありません。実際、ionic lolを含めないのは間違いでした。だから、すべてがうまくいくように見えますが、初めてコルドバだけで構築することに欠点があるかどうかはわかりません。たぶん誰かがコメントにいくらかの光を投げかけることができる

1
Nahuel Arjona

私の場合、Swiftコンパイラーのバージョンとワークスペースの設定をXCODE 10.2.1で指定する必要があります

注:私のプロジェクトではOnesignalプラグインをインストールしました

最初に、Swiftコンパイラーのバージョンを指定しました。

  1. Cocoapodsがインストールされているため、myproject-name.workspaceファイルを開きます。
  2. ビルド設定 xcodeのタブに移動します。
  3. ビルド設定タブの一番下までスクロールしますSwift Compiler-Languageを見つけます。
  4. Swift Language VersionドロップダウンからSwiftバージョンを選択します(例:Swift 4)。

次に、ワークスペースの設定を変更します

  1. Xcodeに移動ファイルメニュー
  2. ワークスペース設定を選択します
  3. ビルドシステムドロップダウンからLegacy Build Systemを選択します
  4. 完了をクリックします

そして、結局、ターミナルで次のコマンドを使用して再構築しようとします

ionic cordova build ios
0
KATJ Srinath