iOS実機を使ったテストにおいて、端末への接続やテスト実行の際に「Error: Unable to launch WebDriverAgent because of xcodebuild failure: "xcodebuild failed with code 65".」というエラーが起きることがあります。現状こうしたエラーが起きた場合は、以下のようにXcodeでダミーのProjectを作成することで、必要な設定が自動的に行われます。
こちらのページに記載されている、Appium及びXcodeの問題です。
目次
1.エラーを回避するための設定
まず最初に、テスト実行に利用するiOS実機をUSBケーブルでMac PCに接続しておきます。
続いて、Macのアプリケーション一覧から「Xcode」を開きます。(図1)
複数のバージョンのXcodeがPCにインストールされている場合は、テストで利用しているXcodeと同じバージョンのものを開いてください
起動したら、画面上部メニューから「File」>「New」>「Project」を選び、iOSの「Single View App」を選んで(他の種類のiOSのアプリケーションでも可)「Next」を押します。(図2)
続いてプロジェクト情報の指定画面で以下の値を指定します。(図3)
- 「Organization Identifier」が空の場合は、世の中にある他の組織と重複しない適当な値を指定します。
- 「Organization Name」が空の場合は、そちらも適当な値を指定します。
- 「Product Name」に、「xctrunner」を指定します。
- 「Team」の項目に、今回の実機テストで利用する「チームID」に対応するApple IDのTeamを選びます。
Teamの選択肢が複数あってどれか分からない場合は、Xcode上部メニューの「Xcode」>「Preferences」>「Accounts」の「Apple IDs」の項目で、Apple IDとTeamの対応を確認できます。
その後「Next」を選び、次画面で「Create」を選ぶと、Projectが作成されます。
作成したProject情報の画面が表示されたら、画面左上の端末表示を、現在USBケーブルで接続されているiOS実機に変更します。(図4)
この画面にて、図5のように「Signing」のセクションに「Team」が指定され、エラーが出なくなっていれば設定は完了です。
図6のようにエラーが出ている場合は、iOS実機をUSBケーブルで接続して「Register Device」ボタンを押す、などしてエラーを解消してください。
iOS実機テストを実行する際には、Xcode11以降の場合は、テスト編集画面にて、「WDA用バンドルID」に<Xcodeで作成したOrganization Identifierの値>を指定します(図7)。
Xcode10以前の場合は、<Xcodeで作成したOrganization Identifierの値>.xctrunnerを指定します。
最後にiOS実機端末を再起動します。(図8)
この状態で端末への接続やテスト実行を行えば、エラーが出なくなるはずです。
2.パスワード関連のエラーが出る場合
codesignのパスワード認証ダイアログ(図11)にて、何度パスワードを入力しても成功しなかったり、Xcodeの「signing」のセクションで「The user name or passphrase you entered is not correct.」というエラーが出たりする場合は、以下の手順で問題を解決できるはずです。
エラーの原因はXcodeの何らかのバグだと思われます。
- 「アプリケーション」>「ユーティリティ」フォルダから起動できる「キーチェーンアクセス」(図9)にて、「ログイン」の項目を右クリックして「キーチェーン"ログイン"をロック」を選び(図10)、続いて「キーチェーン"ログイン"のロックを解除」を選んでパスワードを入力し、ロックを解除状態に戻します。
The user name or passphrase you entered is not correct.
- 図11のパスワード認証ダイアログでは、パスワードを入力後に、「許可」ではなく「常に許可」を選択するようにします。
上記を実施後、エラーを回避するための設定をやり直してください。まだエラーが出る場合は、キーチェーン「ログイン」のロックとロック解除を再度試してください。
パスワード認証ダイアログで「拒否」を押してしまった場合にも、キーチェーン「ログイン」のロックとロック解除を行うことで再度ダイアログが表示されるようになります。
3.Xcode 10以降とiOS 12より古い端末の組み合わせを利用している場合
接続がうまく行かない場合に、こちらの手順に従ってMagicPodDesktopのLog Levelを「MagicPod Bug Investigation」にすると、以下のようなメッセージが表示される場合があります。
(...)
Testing failed:
WebDriverAgentRunner:
WebDriverAgentRunner-Runner.app (217) encountered an error (Failed to load the test bundle. (Underlying error: バンドル“WebDriverAgentRunner”は、壊れているか必要なリソースがないため読み込めませんでした。. バンドルが壊れているか、必要なリソースがありません。. dlopen_preflight(/var/containers/Bundle/Application/A2B6B2E8-87C0-4BF9-A13B-48F1FBE0CD86/WebDriverAgentRunner-Runner.app/PlugIns/WebDriverAgentRunner.xctest/WebDriverAgentRunner): Library not loaded: /System/Library/Frameworks/CoreServices.framework/CoreServices
(...)
この場合は、次の手順で問題を解消できることがあります。
- こちらからXcode 9.*をダウンロードして解凍し、適当なフォルダに移動する
- 現在利用中のバージョンのXcodeを起動する
- 「Settings」 -> 「Locations」 >「Command Line Tools」にて、1.で解凍したバージョンのXcodeを選択する(図12)
- 選択後に、選択されたXcodeの場所を移動すると、正常に動作しなくなるので注意してください
なお、iOS12以降の端末と接続を行う場合は、Command Line Toolsの選択を毎回元に戻す必要があるので注意してください。
4.それでもうまくいかない場合
まずは以下の点を確認してください。
- 上記の設定作業において使用したTeamは、iOS実機のテストで指定しているTeam IDに対応するものですか?
- 上記のXcodeの設定作業において、Project画面左上の端末表示は、USBケーブルでPCに接続した端末になっていますか?また、端末表示に「OS Version lower than deployment target」というメッセージが出ていませんか?もし出ている場合は、こちらのページなどをDeployment Targetを適当な値にした後、Xcode画面左上のボタンを押して「Build Succeeded」のメッセージを表示させておいてください。
- 複数のXcodeをPCにインストールしている場合、設定を行ったXcodeのバージョンと、テストで利用しているXcodeのバージョンは同じですか?
- iOSシミュレータが起動していませんか?起動している場合は終了してください。
- Xcode上でログインしているApple開発者プログラムのIDは有料のものですか? 無料版の利用は推奨していません。
- Xcode上でログインしているApple開発者プログラムのIDは、指定したteam IDのteamに属している必要があり、かつこちらに記載された適切なロールを持っている必要があります。
特に問題無いようなら、Apple開発者プログラムのiOSの「Certificates, Identifiers & Profiles」のページにログインし、さらに次の点を確認してください。
まず、Certificatesの項目にCertificateが登録されていることを確認してください。(図13)
次に、「App IDs」の項目に、IDの値が「<Xcodeで作成したOrganization Identifierの値>.xctrunner」とマッチするものがあることを確認してください(図14)。なお、「*」は任意の文字列とマッチするパターンです。
最後に、「Devices」の項目に、テストで利用する端末が登録されていることを確認してください。(図15)
Xcodeの設定がうまくいった場合は、上記3点の情報が自動生成されているはずです。うまく生成されていない場合は、Xcodeの設定をもう一度やり直すか、Apple開発者プログラムの画面上から情報を直接作成・編集してください(直接作成・編集をした場合は、念のためエラーを回避するための設定をやり直してください)。
それでもまだうまくいかない場合は、下記を実施すると問題が解消される可能性があります。
- /Users/ユーザー名/Library/MobileDevice/Provisioning Profiles以下にある「プロビジョニングプロファイル」を削除した上でXcodeを再起動し(再起動しないとXcodeに削除が認識されません)、エラーを回避するための設定をやり直します。なお、作成日付が新しい「プロビジョニングプロファイル」がフォルダ内に無い場合は、作成がうまくいっておらず、エラーを回避するための設定の手順がうまくいっていません。
- iOS実機の設定アプリで「デベロッパ」>「Clear Trusted Computers」をタップした後、USBケーブルを一度抜いて接続し直します。コンピュータを信頼するかの確認メッセージが出るので「信頼する」をタップします。
それでもさらにうまくいかない場合は、可能性は低いですが下記手順で問題が解消される可能性があります。
- /Users/ユーザー名/Library/Developer/Xcode/DerivedData以下にある、「WebDriverAgent-***」のディレクトリを削除します。
- MacのActivity Monitorでiproxyという名前のプロセスが無いか調べ、あれば全て終了しておきます。
- iOS実機端末にWebDriverAgentRunnerのアプリがインストールされている場合は、アンインストールしておきます。
- Xcodeの「キーチェーンログインのパスワードを入力してください」でパスワードが通らないのページに記載された、XcodeのApple IDおよび証明書を再取得する手順を試します。
それでもさらにうまくいかない場合は、下記の情報とともにサポートまでお問い合わせください。
- ログレベルを「MagicPodバグ調査」にして接続を実施して失敗した際の、ConsoleとAppium Consoleのテキスト
- Xcodeのダミープロジェクトを作成した時の、下記のようなXcodeの設定情報画像