📑

【Flutter】Codemagicで「.envが無い!」と怒られる

2021/08/11に公開

これはなに

flutter_dotenvを用いて.envで環境変数を管理し、.gitignoreに入れておいたところ、Codemagicのビルド時に以下のようなエラーが出ました。そりゃそうだ。

Error detected in pubspec.yaml:

No file or variants found for asset: .env.

Codemagic上でビルド前に.envファイルを用意してエラーを解決する方法を書きます。
こちらの公式の説明に沿っていきます。

https://docs.codemagic.io/building/encrypting/

'You will first have to base64 encode it.'

まず、ファイルをbase64でエンコードします。.envファイルはプロジェクトのルートにあるので、以下のコマンドを打ってエンコードした値をクリップボードにコピーします。その他のファイル・階層については適宜読み替えてください。

base64 .env | pbcopy

'Then encrypt the received string.'

前のステップで受け取った値をCodemagic上でencryptします。まずApp Srttingsの右のバーから""を選択します。


エンコードした値をペーストして、encryptしてもらい、クリップボードにコピーします。

'Save the encrypted string to an environment variable.'

上で受け取った値を適当な環境変数に渡します。今回はENVという名前で設定しました。同じくApp SettingsのEnvironment variablesの項目で環境変数名とその値をそれぞれ入力します。間違いがないことを確認し、Secureを押してAddしてください。


Addし終わった後

'Finally, base64 decode it during build time in your scripts section.'

ビルド前に、.envを作成するスクリプトを書きます。
App Settingsのビルドフローの中のTestとBuildの間の+をタップして、

出てきたスクリプト記入欄の下の方の”Pre-build script”に以下のコマンドを記入します。

echo $ENV | base64 --decode> $FCI_BUILD_DIR/.env

上のバーにあるSave Changesボタンを押して完了です!ビルドして確かめてみてください!

Discussion