iOSシミュレータでテストを行うには、アプリの実体である「.appファイル」が必要です。
各ユーザーのアプリでテストを行う場合、.appファイルをアプリ開発担当者に用意してもらうか、以下の1〜3のいずれかの手順でアプリのソースコードから.appファイルを生成・取得してください(IPAファイルから.appファイルを生成することはできません。IPAファイル内から.appファイルを取り出してもシミュレータでは動作しません。)。なお、MagicPodが提供するデモアプリの.appファイルをダウンロードして使うことも可能です。
目次
1.Xcodeを使う場合
- Xcode(Macが必要です)でアプリのプロジェクトを開きます。
- ビルド対象を適当なiOSシミュレータに変更します。([1])
- ビルドを行います。([2])
- メニューバーの「Product」をクリックして「Show Build Folder in Finder」を選択すると、.appファイルのある場所を開くことができます。([3]) ※見つからない場合は/Users/○○/Library/Developer/Xcode/DerivedData/△△△△/Build/Products/Debug-iphonesimulatorを参照してください。
- Zipファイルに変換し、MagicPodにアップロードします。([4])
.appファイルの生成・取得
2.Bitriseを使う場合
2-1.Bitrise初期設定
Bitriseは、最近人気のiOS・Androidアプリのビルドをクラウド上で行えるCIサービスです。最近は色々なCIサービスがありますが、Bitriseには以下のような特徴があります。
- 無料版から使い始められる
- モバイルアプリのビルドに特化している
- 以下のようなGUIでビルド設定が簡単に行える
ワークフローの設定内容はbitrise.ymlというファイルに集約されており、これを直接編集したり、Gitレポジトリで管理することもできるようです。※1
では新規登録から説明します。
- このページではiOSについて説明していますが、Androidもほぼ同じです。Androidの場合、2-2.Bitriseでシミュレータ用にiOSアプリをビルドするで設定するステップを「Android Build」にします。
まずBitriseに新規登録して初期設定を行いましょう。
Bitriseサインアップページへ移動しユーザ登録をします。
Bitriseから「Confirmation instructions」という件名のメールがくるので「Confirm My Account」を押します。
名前などを入力します。
ユーザ登録が完了しました。スタートページに移動したら「Start with Bitrise CI」を押します。
「Get Started with Bitrise CI」に遷移したら、「New CI project」を押します。
するとアプリのビルド設定の画面になるので、ここでビルドの設定をしていきます。
必要な設定は以下の通りです。
- Project access:
-
Bitriseの設定を一般公開するかを指定します。Privateでよいでしょう。
-
- Select repository:
-
ビルドしたいiOSアプリのソースコードが入っているGitレポジトリを指定しましょう。GitHub/Bitbucket/GitLabが選べます。手元にちょうどいいアプリが無い場合、MagicPodデモアプリのプロジェクトをGitHub上でフォークして使用してもらっても構いません。
-
- Setup repository access:
- GitHubのサブモジュールの機能を使っているなど、追加で別のプライベートGitレポジトリにアクセスする必要がある場合は、「I need to」で必要な設定を行います。特に心当たりがなければ「No, auto-add SSH key」を選択しましょう。
- GitHubのサブモジュールの機能を使っているなど、追加で別のプライベートGitレポジトリにアクセスする必要がある場合は、「I need to」で必要な設定を行います。特に心当たりがなければ「No, auto-add SSH key」を選択しましょう。
- Choose branch
-
「master」などの、ビルドするGitのブランチ名を指定します。
-
ここまで設定すると、Bitriseがレポジトリの内容を解析して、ビルド設定を自動で作成してくれます。
ここで、以下のようなエラーメッセージが出る場合があります。
とりあえずiOSシミュレータでMagicPodのテストをしたいだけの場合は、「Proceed anyway」を選んで先に進んでください。
直近で実機用のビルドも考えている場合は、ちゃんと修正した方がよいです。こちらの記事に従い、Xcode上でビルドShemeをSharedにして、xcshareddataをGitレポジトリにコミットしましょう。その後Bitriseのビルド設定に戻り、「Scan another branch」の項目を選んで(ブランチ名はそのままにします)、ビルド設定を再開します。
- Default configuration
- MagicPodクラウドテストはモバイルアプリテストなので「iOS」を選択します。
「Distribution method」はMagicPodクラウドテストでは関係ないのでとりあえず「ad-hoc」を選んでおきます。※2
以上で初回セットアップは終了です。最後に以下画像のボタンを押すと自動でビルドが始まります。
しかし、1回目は以下のように最初のビルドは失敗してしまうはずです。
2-2.Bitriseでシミュレータ用にiOSアプリをビルドする
初回のビルドが失敗した原因は、iOS実機用のビルドに必要な設定が不十分だったためです※4。ですが、今回紹介する手順はiOSシミュレータに対するビルド設定なので、実機用の設定は削除して、シミュレータ用の設定に差し替えましょう。
まず、ビルド結果画面の上にある「Edit workflow」というボタンを押して、ビルドワークフローの編集画面に移動します。
ここで、左にある「Xcode Build for testing for iOS」の三点メニューを押して、このステップを削除します。
次に、「Git Clone Repository」のすぐ下にカーソルを当て、「+」を押し、
「Xcode build for simulator」のステップを検索して追加します※5。
ここまでできたら、画面右上の保存ボタンで変更を保存し、
画面上のアプリ名を押してビルド画面へ移動します。
失敗したビルド結果の「Rebuild」ボタンから再度ビルドを実行します。
今度はビルドが成功するはずです。
2-3.テスト作成に必要な.appファイルを用意する
アプリの自動ビルドができるようになったので、次はMagicPodのクラウド端末を使ってテストを作成するためのシミュレータ用アプリ実体ファイルである.appファイルを用意しましょう。
簡単な設定を行えば、Bitriseでビルドされた.appファイルがダウンロードできます。
まず、成功したビルド結果を押します。
2-4.トラブルシューティング
Bitriseでビルドしたappファイルのテストが失敗する
Bitriseの「Xcode build for simulator」のステップが、Keychainにうまくアクセスできる.appファイルを生成できていない可能性があります。
詳しくはこちらのヘルプページの内容をご確認ください:Bitriseでビルドしたappファイルのテストが「Client has neither application-identifier nor keychain-access-groups entitlements」で失敗する
3.Cordovaアプリの場合
まず、こちらの手順に従い、「cordova emulate ios」コマンドでiOSシミュレータ上にテスト対象のiOSアプリをインストールします。
インストールできたら、iOSシミュレータ上でアプリを立ち上げます。
続いてMacのターミナルを開き、「ps aux | grep アプリ名」を実行します。アプリ名は通常Cordovaのプロジェクト名と同じで、部分一致も可能です。
これで以下のように結果が見つかれば、そこに.appファイルのパスが含まれているはずなので、これをコピーしてきて利用します。
4.React Nativeアプリの場合
4-1. 「No bundle URL present」エラーが出る場合
Xcodeを使う場合の手順で.appファイルを生成した際に「No bundle URL present」エラーが出ることがあります。本エラーが出た場合は以下の方法でビルドを行ってください。(参照: No bundle URL present [fixed])
1. Xcodeの既存のtargetを複製する
2. .jsbundleファイルを作成する
ReactNativeプロジェクトのルートディレクトリにて以下を実行する
$ npx react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios' ビルドしたアプリで画像が表示されないトラブルが起きた場合は以下を実行する(参照)
$ npx react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --platform='ios' --assets-dest='ios'3. ビルド時に.jsbundleファイルを含める
Xcode上で手順1で作成したtargetのBuildPhases > Copy Bundle Resourcesに手順2で作成したmain.jsbundleを追加する
4. ビルドする
Xcode上で手順1で作成したtargetを選択し、ビルドを行う
4-2. デバッグビルド使用時にアプリが起動できない場合
リリースビルドに変更してください。デバッグビルドを使用しているとシミュレータを起動しているPCのローカルファイルを参照しようとするために発生する問題が確認されています。(参照)
※注釈・出典
- bitrise.ymlをリポジトリ内で管理するための手引き
- この設定はiOS実機用のipaファイルをビルドする場合の設定ですが、MagicPodのクラウドテストではiOSシミュレータを使うのでipaファイルはビルドしません。
- 後からWebhookを設定する場合、ビルド設定の「Code」タブから可能です。
- ビルドのLogを確認すると「No profiles for '***' were found: 」というエラーが出ているはずです。
- ちなみに「Do anything with Script step」「Certificate and profile installer」のステップは今回のiOSシミュレータビルドに不要なので、邪魔なら削除してもよいです。