🤖

Gradle関連で困ったときの逆引きメモ

2025/01/31に公開

FlutterアプリでAndroid向けにビルドした時の、Gradle関連のエラーの個人的な解消方法をメモしておきます。Flutterアプリに限らず、Android向けであれば有効かもしれません。

使いたいgradleの設定

android/gradle/wrapper/gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip

distributionUrlを編集し、使いたいバージョンのファイル名に設定する。

使うAGP(Android Gradle Plugin)のバージョン

android/settings.gradle
plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version "8.8.0" apply false
    id "org.jetbrains.kotlin.android" version "1.8.22" apply false
}

8.8.0までは動作確認できました。ndkVersionの修正を促される場合は下記のようにapp/build.gradleを修正。Android Studio経由でインストールした最新バージョンのようです。

android/app/build.gradle
plugins {
    id "com.android.application"
    id "kotlin-android"
    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
    id "dev.flutter.flutter-gradle-plugin"
}

android {
    namespace = "com.example.hello_camera"
    compileSdk = flutter.compileSdkVersion
    ndkVersion = "27.0.12077973" // ここ

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17 // ここも
        targetCompatibility = JavaVersion.VERSION_17 // ここも
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_17.toString() // 21には対応していない
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId = "com.example.hello_camera"
        // You can update the following values to match your application needs.
        // For more information, see: https://flutter.dev/to/review-gradle-config.
        minSdk = 28 // 21以上
        targetSdk = 35 // 最新にしています
        versionCode = flutter.versionCode
        versionName = flutter.versionName
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig = signingConfigs.debug
        }
    }
}

flutter {
    source = "../.."
}

キャッシュのクリア

バージョンを変更したり、gradleのインストールに不具合があったりして延々とバグが取れないことがあります。キャッシュが原因のことが多いです。

プロジェクトのAndroid関連のキャッシュを削除

flutterのインストール先はご自身の環境に合わせてください。

sh
flutter clean
rm -rf /Users/[Your name]/flutter/bin/cache
cd android
./gradlew clean
cd ..
flutter pub get

大抵はこれでうまくいくことが多いですが、うまくいかない場合は下記を試した後、もう一度プロジェクト内のキャッシュクリアをしています。

.gradle/cachesの削除

sh
rm -rf ~/.gradle/caches
rm -rf ~/.gradle/wrapper

もしくは下記コマンドでデスクトップに退避させて、動くことを確認したのちにゴミ箱へポイしています。おしゃれではないですが、よくこちらでやっています。

sh
mv ./.gradle/caches ./Desktop/caches

.gradle以下の削除

私の場合、間違ったファイル名をgradle-wrapper.propertiesに書いてしまい、エラーが消えないことがありました。荒技かなと思いますが、下記を実行し、プロジェクト内のキャッシュも削除するとうまく行きます。

sh
cd ~/.gradle
rm -rf *

この程度の悩みであれば、再掲ですが下記で十分かなと思います。

sh
rm -rf ~/.gradle/caches
rm -rf ~/.gradle/wrapper

Discussion