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])
2.Bitriseを使う場合
2-1.Bitrise初期設定
Bitriseは、最近人気のiOS・Androidアプリのビルドをクラウド上で行えるCIサービスです。最近は色々なCIサービスがありますが、Bitriseには以下のような特徴があります。
- 無料版から使い始められる
- モバイルアプリのビルドに特化している
- 以下のようなGUIでビルド設定が簡単に行える
ワークフローの設定内容はbitrise.ymlというファイルに集約されており、これを直接編集したり、Gitレポジトリで管理することもできるようです。※1
では新規登録から説明します。
- このページではiOSについて説明していますが、Androidもほぼ同じです。Androidの詳しい設定方法についてはBitriseとMagic PodでAndroidアプリもCI & 自動テストをご覧ください。
まずBitriseに新規登録して初期設定を行いましょう。
Bitriseサインアップページへ移動しユーザ登録をします。
Bitriseから「Confirmation instructions」という件名のメールがくるので「Confirm My Account」を押します。
名前などを入力します。
ユーザ登録が完了しました。スタートページに移動したら「Add new app」を押します。
するとアプリのビルド設定の画面になるので、ここでビルドの設定をしていきます。
必要な設定は以下の通りです。
- CHOOSE ACCOUNT:
- Bitriseの設定を一般公開するかを指定します。Privateでよいでしょう。
- Connect your repository:
- ビルドしたいiOSアプリのソースコードが入っているGitレポジトリを指定しましょう。GitHub/Bitbucket/GitLabが選べます。手元にちょうどいいアプリが無い場合、MagicPodデモアプリのプロジェクトをGitHub上でフォークして使用してもらっても構いません。
- Setup repository access:
- 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」の項目を選んで(ブランチ名はそのままにします)、ビルド設定を再開します。
続いて以下のような「Select ipa export method」を選択するよう言われますが、MagicPodクラウドテストの場合は関係ないのでとりあえず「ad-hoc」を選んでおきます。※2
アプリアイコンを設定する場合はここで「Choose Image and Proceed」を押します。
最後のWebhook setupを行うと、Gitレポジトリに変更(PushまたはPull Request)が入るたびに自動ビルドが行われるようになります。ぜひとも「Register a Webhook for me!」を選んでおきましょう。※3
以上で初回セットアップは終了です。最後に以下画像のボタンを押すと自動でビルドが始まります。
しかし、1回目は以下のように最初のビルドは失敗してしまうはずです。
2-2.Bitriseでシミュレータ用にiOSアプリをビルドする
初回のビルドが失敗した原因は、iOS実機用のビルドに必要な設定が不十分だったためです※4。ですが、今回紹介する手順はiOSシミュレータに対するビルド設定なので、実機用の設定は削除して、シミュレータ用の設定に差し替えましょう。
まず、ビルド結果画面の上にある「Edit workflow」というボタンを押して、ビルドワークフローの編集画面に移動します。
ここで、左にある「Xcode Archive & Export for iOS」を選択し、
「Delete Step:Xcode Archive & Export for iOS」を押しこのステップを削除します。
次に、「Deploy to Bitrise.io - Apps, Lo...」のすぐ上の「+」ボタンを押し、
「Xcode build for simulator」のステップを検索して追加します※5。
ここまでできたら、画面右上の保存ボタンで変更を保存し、
画面上のアプリ名を押してビルド画面へ移動します。
失敗したビルド結果の「Rebuild」ボタンから再度ビルドを実行します。
今度はビルドが成功するはずです。
2-3.テスト作成に必要な.appファイルを用意する
アプリの自動ビルドができるようになったので、次はMagicPodのクラウド端末を使ってテストを作成するためのシミュレータ用アプリ実体ファイルである.appファイルを用意しましょう。
簡単な設定を行えば、Bitriseでビルドされた.appファイルがダウンロードできます。
まず、「Workflow」タブを押し、先ほどのWorkflow Editor画面へ移動します。
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シミュレータビルドに不要なので、邪魔なら削除してもよいです。