eas build --platform ios が証明書まわりのエラーで通らない。エラーメッセージを読んでも何を直せばいいのか分からない——ここで何時間も溶かす人は多いです。
iOSビルドが証明書・プロビジョニングプロファイルで落ちる典型パターンと、Expoに資格情報を管理させて事故を防ぐ手順をコードつきで書きます。
- 結論:証明書はExpoに管理させる
- そもそも証明書とプロファイルの関係
- よくあるエラーと原因
- 解決手順:eas credentials
- CI向けにcredentials.jsonで管理する
- まとめ
先に結論です。個人〜小規模開発なら、証明書とプロビジョニングプロファイルはEASのリモート管理に任せる。これが一番ハマりません。手動でcredentials.jsonを用意するのは、CIや複数人で資格情報を共有したいときだけで十分です。
iOSビルドには2つの資格情報が必要です。ここを混同するとエラーの意味が読めません。
? iOSビルドに必要な資格情報
① Distribution Certificate(配布証明書)
→ 「誰がビルドしたか」を証明する鍵
② Provisioning Profile(プロビジョニングプロファイル)
→ 「どのアプリ(Bundle ID)を・どの証明書で・どこに配布できるか」をまとめた許可証
├ Bundle Identifier(例: com.yourname.memories)
├ Distribution Certificate への参照
└ 配布方法(Ad Hoc / App Store など)
エラーの大半は②のプロファイルが、①の証明書やBundle IDと噛み合っていないことが原因です。
症状①
Provisioning profile … doesn’t include signing certificate
プロファイルが参照している証明書と、ビルドに使う証明書が違う。証明書を作り直したのに古いプロファイルが残っているとこうなります。
症状②
Provisioning profile is not valid for the bundle identifier “com.example.app”
app.json の ios.bundleIdentifier と、Apple Developer / プロファイル側のBundle IDが一致していない。タイポか、途中でBundle IDを変えたのに反映していないケースです。
// app.json(抜粋)
{
"expo": {
"ios": {
"bundleIdentifier": "com.yourname.memories"
}
}
}
症状③
You have no team associated with your Apple account
Apple Developer Program(有料)に未登録、もしくはログインしているApple IDがチームに紐づいていない。無料アカウントでは配布ビルドは作れません。
迷ったらまず資格情報をクリーンに作り直すのが速いです。
# 1. 資格情報の状態を確認・管理 eas credentials # 対話形式で進む # → Platform: iOS を選択 # → Apple Developer アカウントでログイン # → Distribution Certificate を生成(or 既存を使う) # → Provisioning Profile を再生成 # 2. ビルド実行(資格情報はExpo側が自動で適用) eas build --platform ios --profile production
eas.json のプロファイル設定も確認しておきます。配布方法をここで指定します。
// eas.json
{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": { "simulator": false }
},
"preview": {
"distribution": "internal"
},
"production": {
"autoIncrement": true
}
}
}
? POINT
distribution: "internal" は端末を登録して直接配るAd Hoc配布、指定なし(production)はApp Store配布になります。「TestFlightに上げたいのにinternalで作っていた」もよくある詰まりです。
GitHub Actionsなどで自動ビルドしたい場合は、対話なしで使えるようにローカルに資格情報ファイルを置きます。
// credentials.json(.gitignore必須!)
{
"ios": {
"provisioningProfilePath": "./certs/profile.mobileprovision",
"distributionCertificate": {
"path": "./certs/dist.p12",
"password": "環境変数から渡す"
}
}
}
⚠️ 注意
credentials.json と .p12 は絶対にコミットしないこと。.gitignore に追加し、パスワードは環境変数で渡します。資格情報をGitに上げると最悪アカウント停止につながります。
- iOSビルドは「証明書・プロファイル・Bundle ID・Appleアカウント」の4つが揃って通る
- エラーの大半はプロファイルと証明書 / Bundle IDの不整合
- 個人開発なら
eas credentialsでExpoに管理させるのが事故りにくい - CIではcredentials.jsonを使い、資格情報は絶対にコミットしない


コメント