Flutterでbuildを繰り返していると「File name too long」と出る問題
目次
FlutterでAndroidアプリを繰り返しrunしていると突然コケることがある⌗
こんな感じで、突如 File name too long
を吐き出して以降コケ続けることがあります。
* What went wrong:
Execution failed for task ':app:copyFlutterAssetsLocalDebug'.
> Could not copy file '/hoge/fuga/…/android/app/build/intermediates/flutter/{variant}/flutter_assets/android/app/build/intermediates/merged_assets/{variant}/out/flutter_assets/android/app/build/intermediates/merged_assets/…/piyo' to '/hoge/fuga/…/android/app/build/intermediates/flutter/{variant}/flutter_assets/android/app/build/intermediates/merged_assets/{variant}/out/flutter_assets/android/app/build/intermediates/merged_assets/…/piyo'.
> /hoge/fuga/…/android/app/build/intermediates/flutter/{variant}/flutter_assets/android/app/build/intermediates/merged_assets/{variant}/out/flutter_assets/android/app/build/intermediates/merged_assets/…/piyo (File name too long)
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1m 48s
Exception: Gradle task assembleLocalDebug failed with exit code 1
手元の環境では gradle の copyFlutterAssetsTask のタイミングでコケていました。
原因⌗
よくわかりません🙏
ただ、下記ツイートにあるようにbuild回数を重ねる事にbuildディレクトリが深くなっていっているので、buildの都度ディレクトリが掘られる -> file name too long の流れっぽいことは確かだと思われます。
cache削除してやり直した1回目と2回目の結果がこちら。flutter_assets/android 配下がループしてるっぽいけど原因を追う気力が出ぬ pic.twitter.com/VgVHhMJ7dL
— スク (@orerus) March 18, 2023
とりあえずの対応策⌗
根本原因は分からないので場当たり的な方法になりますが、手っ取り早くやるなら下記コマンドでbuildディレクトリを削除して再度runすればOK。
rm -rf android/app/build
自分は都度コマンドを叩くのが面倒だった為、AndroidStudioの機能を使って以下のようなシェルスクリプトをbuildの前に実行するようにして凌いでいます。
#!/bin/bash
DIR="android/app/build/intermediates/flutter/{variant}/flutter_assets/android"
if [ -d "$DIR" ]; then
rm -rf "$DIR"
fi
DIR="android/app/build/intermediates/merged_assets/{variant}/out/flutter_assets/android"
if [ -d "$DIR" ]; then
rm -rf "$DIR"
fi
※{variant}の部分は各自の環境に読み替えてください
※とりあえず上の2つのディレクトリを消しておけば大丈夫そうでした
一応AndroidStudioの設定手順も⌗
さいごに⌗
もし根本原因&解決策がお分かりの方いらっしゃいましたら是非Twitterの方にDMかリプください🙇♂
Read other posts