React Native(Expo)でiOSアプリを開発していると、EAS Buildのビルド周りで想像以上に詰まります。特にiOSは証明書・プロビジョニングプロファイル・UDIDなど、Android開発にはない概念が多くて最初は混乱しました。
この記事では、EAS BuildでiOSアプリをビルドするときに実際に詰まったことと解決策をまとめます。
対象読者Expo(EAS Build)でiOSアプリをビルドしようとしているエンジニア、特に「integrity could not be verified」エラーで詰まっている人に向けて書きます。
- EAS Buildの基本的な仕組みを理解する
- 「integrity could not be verified」エラーの原因と解決
- EAS Buildには30日の期限がある
- 証明書(Certificate)を再利用する方法
- まとめ:iOSビルドのチェックリスト
EAS Buildの基本的な仕組みを理解する
まずEAS Buildの仕組みを理解しないと、エラーの原因がわかりません。
?️ EAS Buildの仕組み
ローカルのコード
↓ eas build コマンド
Expoのクラウドサーバー(ビルド実行)
↓ Apple Developer Accountの証明書を使う
.ipa ファイル(iOSアプリ)が生成される
↓ Internal Distribution(Ad Hoc配布)
デバイスにインストール
iOSアプリをインストールするためには以下が必要です:
1. Apple Developer Account(有料 年約15,000円) 2. Distribution Certificate(配布証明書) 3. Provisioning Profile(プロビジョニングプロファイル) 4. デバイスのUDID登録(Ad Hoc配布の場合)
? iOSとAndroidの違い
Androidは比較的自由にAPKをインストールできますが、iOSはAppleの管理が厳しく「誰が作った」「誰のデバイスか」を証明する仕組みが必要です。これがEAS BuildでiOS対応が複雑になる理由です。「integrity could not be verified」エラーの原因と解決
PROBLEM 01
iOSにインストールしようとすると「integrity could not be verified」が出る
症状
QRコードからアプリをインストールしようとすると「integrity could not be verified」というエラーが出てインストールできない。
主な原因(優先度順)
以下の順番で確認するのが効率的です:
原因1: EAS Buildの期限切れ(30日)
→ ビルドを作り直す
原因2: プロビジョニングプロファイルの期限切れ(1年)
→ ビルドを作り直すと自動更新される
原因3: デバイスのUDIDが未登録
→ Apple DeveloperにUDIDを登録してから再ビルド
解決策
まずビルドをし直す。それでも解決しない場合はUDIDの登録を確認する。
# ビルドをし直す eas build --platform ios --profile development # ビルド中にプロビジョニングプロファイルの # 更新が自動で行われる
⚠️ よくある勘違い
「UDIDを一度登録したから大丈夫」ではありません。プロビジョニングプロファイルが期限切れになると、登録済みのUDIDがあっても新しいビルドが必要です。エラーが出たらまずビルドをし直すことを試みてください。EAS Buildには30日の期限がある
これを知らなくてハマりました。EAS Buildで作ったiOSのビルドには30日の有効期限があります。30日を過ぎるとインストールできなくなります。
# ビルドの期限確認 # Expo のダッシュボードで確認できる # https://expo.dev/accounts/[username]/projects/[project] # または eas build:list で一覧表示 eas build:list --platform ios
定期的に使うアプリの場合、30日ごとに再ビルドが必要になります。
? POINT
TestFlight経由で配布すると90日の有効期限になります。チームや社内で使うアプリなら--profile previewでビルドしてTestFlight経由で配布する方が管理が楽です。
証明書(Certificate)を再利用する方法
EAS BuildでiOS向けにビルドすると、証明書の選択を聞かれます。既存の証明書がある場合は再利用することをおすすめします。新しい証明書を作ると、以前のビルドが全て無効になります。
# eas build 実行時の選択肢例
? How do you want to validate your account?
> Apple ID and password
# 証明書の選択
? Would you like to use an existing Distribution Certificate?
> Yes, use the existing certificate
No, generate a new certificate # これを選ぶと以前のビルドが全部無効に!
# 既存証明書の確認
# Apple Developer Console → Certificates で確認
# 有効期限(Expiry Date)を確認する
⚠️ 注意
チームで開発している場合、誰かが証明書を新規作成すると、他のメンバーが持っているビルドが全て無効になります。証明書の管理はチームで共有・相談してから行うこと。- 「integrity could not be verified」→ まずビルドをし直す(30日期限・プロビジョニング期限)
- EAS Buildには30日の有効期限がある。TestFlight経由なら90日
- 証明書は既存のものを再利用する。新規作成すると以前のビルドが全て無効に
- チームで使う場合、証明書の管理はチームで共有・相談してから行う
iOSのビルド周りは最初は複雑に見えますが、「証明書・プロビジョニング・UDIDの3つの仕組みを理解する」だけで大半の問題は解決できます。


コメント