Introduction

正確なエラー画面とメッセージは覚えていないが、flutter build ios --release で ios 向けにビルドしていた時、このエラーに遭遇してしまった。
M2 Mac の環境だが、環境を構築したばかりで、既に動くソースコードをクローンして、ビルドした瞬間の出来事。

デスクトップにタイトルのダイアログ、コンソールに下記のようなメッセージも表示された (無理やり再現させたメッセージで実際は違うかも)。

1
2
3
4
Error (Xcode): Target aot_assembly_release failed: Exception: Flutter failed to run "/Users/xxxxxx/flutter/bin/cache/artifacts/engine/ios-release/gen_snapshot_arm64 --deterministic --snapshot_kind=app-aot-assembly
--assembly=/Users/xxxxxx/demo/.dart_tool/flutter_build/a70919c47e05e2f4d0d5f4fc55a502ab/arm64/snapshot_assembly.S /Users/xxxxxx/demo/.dart_tool/flutter_build/a70919c47e05e2f4d0d5f4fc55a502ab/app.dill".

Encountered error while building for device.

How to resolve?

原因は com.apple.quarantine という拡張属性が <flutter-sdk>/bin/cache/artifacts/engine/ios-release/gen_snapshot_arm64 に付与されていたため。
これも正確な値ではないが、下記のような感じ。

1
2
3
$ ls -la /Users/xxxxxx/flutter/bin/cache/artifacts/engine/ios-release/gen_snapshot_arm64
-rwxr-xr-x@ 1 xxxxxx staff 9226944 Sep 15 08:23 /Users/xxxxxx/flutter/bin/cache/artifacts/engine/ios-release/gen_snapshot_arm64
com.apple.quarantine 85

パーミッションの末尾に @ が付くと拡張情報を付与されていることを示している。
この拡張属性 com.apple.quarantine が Flutter SDK のディレクトリ配下全てに付与されていた。
原因は不明だが、Flutter SDK を Windows 経由で展開したため、OS がダウンロードしたものとみなして属性を付与したのかもしれない。

とにかくこの拡張属性を除去すればいいので、下記のように Flutter SDK のディレクトリを再起でチェックし com.apple.quarantine を除去する。

1
$ xattr -dr com.apple.quarantine /Users/xxxxxx/flutter

本当、エラーメッセージとスクリーンショットを取らなかったことが悔やまれる。