【Flutter】Androidビルド時のキャッシュ削除方法
gradleファイル変更によるキャッシュ問題
FlutterのAndroid立ち上げがうまくいかず、gradleなどのファイルをいじっていると、キャッシュの問題で以下のようなエラーを吐いていたので解決方法です。
※エラー自体はAgoraパッケージの影響もあるのですが、さっきまで立ち上げできていたけど、gradleファイルの変更とか試しているうちに、元のコードでも起動できなくなったので、キャッシュの影響と判断しています。
Running Gradle task 'assembleRelease'...
You are applying Flutter's main Gradle plugin imperatively using the apply script method, which is deprecated and will be removed in a future release. Migrate to applying Gradle plugins with the declarative plugins block: <https://flutter.dev/to/flutter-gradle-plugin-apply>
Reading env from: .env
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':iris_method_channel:generateReleaseRFile'.
> A failure occurred while executing com.android.build.gradle.internal.res.GenerateLibraryRFileTask$GenerateLibRFileRunnable
> /Users/path/.gradle/caches/transforms-3/0000000000000000000/transformed/androidx.fragment-r.txt
* 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 7s
Running Gradle task 'assembleRelease'... 8.0s
Gradle task assembleRelease failed with exit code 1
Gradleキャッシュをクリアしてビルドする
このエラーは、Androidビルド時の依存関係管理やGradleキャッシュの不整合が原因で発生することが多いです。
以下のコマンドでキャッシュをクリアしましょう。
自分はこれで起動できました。
% cd android
% ./gradlew clean
% ./gradlew --stop
% rm -rf ~/.gradle/caches/
% cd .. && rm -rf android/.gradle/
% fvm flutter clean
% fvm flutter pub get
補足:Clipyのスニペットに登録すれば便利
上記をまとめて実行するコマンドも書いておきます。
割と自分はこういうのをClipyなどのコピペ履歴のツールのスニペットとして登録しています。
「コマンドなんだっけ・・・」ということがなくなります。
cd android && ./gradlew clean && ./gradlew --stop && rm -rf ~/.gradle/caches/ && cd .. && rm -rf android/.gradle/ && fvm flutter clean && fvm flutter pub get
./gradlewコマンドが実行できない場合
Javaがインストールされているか確認
以下のコマンドを実行して、Javaがインストールされているか確認します。
% java -version
java version "17.0.6" 2023-01-17 LTS
Javaがない場合はインストール
Homebrewがインストールされている場合、以下のコマンドでJavaをインストールします。
% brew install openjdk@17
インストール後、実行結果に書かれているコマンドの実行とPathを通す作業があったと思います。
(ログ取るの忘れてました…)
多分こんな感じの
% sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
再度、Javaがインストールされているか確認してバージョン表示されたらOKです。
gradlewファイルが存在するが実行できない場合
gradlew
ファイルが存在するが実行できない場合は、実行権限を付与します。
% chmod +x android/gradlew
これで実行できるようになるはずです。