better done than better said

困ったときに調べた結果

crodova開発環境 iosのエミュレータ, 実機での実行(Xcode10でのハマりどころ)

前回の記事の通り開発環境を構築。

基本的には以下のガイドライン通りにすれば起動します。
iOS プラットフォーム ガイド - Apache Cordova

# エミュレータで確認、デバックするために以下をインストール

$ npm install -g ios-sim
$ npm install -g ios-deploy

# 実機で実行
cordova run ios --device

#エミュレータで実行

## 実行したい端末一覧を確認
$ ./platforms/ios/cordova/lib/list-emulator-images
iPhone-5s, 12.1
iPhone-6, 12.1
iPhone-6-Plus, 12.1
iPhone-6s, 12.1
iPhone-6s-Plus, 12.1
iPhone-7, 12.1
iPhone-7-Plus, 12.1
iPhone-SE, 12.1
iPad-Air, 12.1
iPad-Air-2, 12.1
~

$ cordova emulate --target=iPhone-SE ios

これだけで簡単にエミュレータで動作が確認出来ます!
...とXcode9まではそうだったんですがXcode10の場合は現在少し手を入れないと正しく動作しないようです。

[ANNOUNCEMENT] Status of Xcode 10 support · Issue #407 · apache/cordova-ios · GitHub

上記のissuesのようにrun, buildが動作しませんが記事に倣ってコマンドにオプションを足せばエミュレータが正しく動作します。

$ cordova emulate ios --buildFlag="-UseModernBuildSystem=0"

実機端末は基本的に以下のコマンド

$ cordova run ios

初回インストール時は信頼されてないデベロッパとなりコンソールでエラー表示になるので以下ので順で実機端末の設定を変更。
iphone名の[設定]を開き、[一般] - > [デバイス管理]に移動して、信頼するデベロッパーアプリの証明書を選択します。

またXcode10でビルドしたアプリを実機テストしようとすると
A valid provisioning profile for this executable was not foundというエラーが...

Xcode「File」→「Project Settings...」-> Build System」を「Legacy Build System」に変更でとりあえず起動ができるようになりました。
参考:Xcode 10でA valid provisioning profile for this executable was not

テストした端末はXだったので比較的新しい端末で行うとXcode10では上記のエラーとなってしまうのだろうか。 しかしXcode 10出たのは2018年9月頃だったのに今だに対応出来ていないのはなかなか闇が深い感じですね。

もしコマンドのエラーが良くわからず詰まった場合はXcodeで以下のファイルを開いてbuildしてみると詳細なエラーが確認出来るので試してみるのをお勧めします。

./platforms/ios/cordova-project.xcodeproj

その他ハマりどころ