【Flutter × Xcode Cloud】.env が原因のエラー「exit code 65」を解消する方法



【Flutter × Xcode Cloud】.env が原因のエラー「exit code 65」を解消する方法

Flutter アプリを Xcode Cloud でビルドしようとした際、以下のようなエラーに悩まされました。

この原因と、私が実際に行った解決手順を紹介します。

🔍 原因:.env ファイルが Xcode Cloud 上に存在しない

Flutter アプリで flutter_dotenv パッケージを使っている場合、.env ファイルをアセットとして読み込む必要があります。
ローカルでは存在していても、Xcode Cloud は Git 上のファイルしか読み込まないため、
.gitignore によって .env がコミットされていないと、ビルド時にファイルが見つからず失敗します。

✅ 解決策:Xcode Cloud の「共有環境変数」と ci_post_clone.sh を使って .env を生成

  1. Xcode Cloud の「共有環境変数」に APIキーなどを登録
  2. ci_post_clone.sh スクリプトで .env ファイルを動的に生成

1. 共有環境変数の設定方法

  • Xcode Cloud の 設定 > 共有環境変数 へ移動
  • 「+」をクリックして環境変数を追加
  • 例:

    • OPENAI_API_KEY=sk-xxxxxxxx
    • API_BASE_URL=https://example.com
  • Secure チェックを入れて安全に保管

2. ci_post_clone.sh の編集内容

以下のように .env を生成する処理を追加します:

🛠 pubspec.yaml に .env を登録

🔒 .env は .gitignore に残すべき?

はい、.env は機密情報を含むため、引き続き .gitignore に記載して Git にはコミットしないようにしましょう。
CI 環境では自動生成する運用が安全です。

✅ 結果

この対応により、以下のエラーは完全に解消され、Xcode Cloud でのアーカイブが正常に完了しました。

まとめ

  • Xcode Cloud はリポジトリに存在しないファイルを読み込めない
  • .env は CI 環境で動的に生成するのがベストプラクティス
  • セキュアなキー管理には「共有環境変数」を活用しよう

Flutter × Xcode Cloud の CI/CD で悩んでいる方の参考になれば幸いです。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

ITパスポート、基本情報技術者、応用情報技術者などIPAが提供する国家資格の過去問を学べるモバイルアプリをリリースしました。
詳しくは下記のプレスリリースをご覧ください。
https://prtimes.jp/main/html/rd/p/000000008.000073303.html

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Xcode Cloud

Posted by ちこ