事象
package_info_plus
を4.0.1
にupgradeしてadnroidアプリをビルドしたところ以下のエラーが発生しました
$ flutter build apk
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/shodai.suzuki/.pub-cache/hosted/pub.dev/package_info_plus-4.0.1/android/build.gradle' line: 28
* What went wrong:
A problem occurred evaluating project ':package_info_plus'.
> No signature of method: build_comc54dujymydkh0ctja6yf8i.android() is applicable for argument types: (build_comc54dujymydkh0ctja6yf8i$_run_closure2) values: [build_comc54dujymydkh0ctja6yf8i$_run_closure2@4a914b95]
* 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 16s
Running Gradle task 'assembleRelease'... 17.3s
Gradle task assembleRelease failed with exit code 1
package_info_plus
内のメソッドが原因でGradle task
のassembleRelease
が失敗している様です。
原因
以下のIssueで議論がされていました
The problem is in namespace property that we added to be compatible with Android Gradle Plugin 8. This property is supported since Android Gradle Plugin 7.0 only.
You need to update your projects to use Android Gradle Plugin to be at least 7.0. I would suggest to use something like 7.4.2.
Here is an example on where to set the version: https://github.com/fluttercommunity/plus_plugins/blob/main/packages/package_info_plus/package_info_plus/android/build.gradle#L13
Android Gradle Plugin 8
と互換性を持たせるために追加されたnamespace
プロパティはAndroid Gradle Plugin 7.0
以降でのみサポートされおり、使用しているGradle Plugin
のバージョンが7.0に満たないためエラーになっていそうです。
プロジェクトの確認
実際のプロジェクトを見てみると以下の通りandroid/build.gradle
で指定されているバージョンは4.1.0
でした。
※ 4.x
系は2020年にリリースされたバージョンで現在はEOLになっているそうです。
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
}
対応
プロジェクトで使用しているGradle Plugin
と参照するGradle
のバージョンをアップグレードします。
アップグレード可能なGradle
バージョンは以下で確認します
gradle
のリリース情報
android/gradle/wrapper/gradle-wrapper.properties
のdistributionUrl
で参照しているパスはこちらなのでここから探すことも可能です。
- distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip
dependencies {
- classpath 'com.android.tools.build:gradle:4.1.0'
+ classpath 'com.android.tools.build:gradle:7.4.2'
}
確認
再度ビルドコマンドを実行し無事にビルドが成功することが確認できました。
$ flutter build apk
環境
$ flutter --version
Flutter 3.10.0 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 84a1e904f4 (2 weeks ago) • 2023-05-09 07:41:44 -0700
Engine • revision d44b5a94c9
Tools • Dart 3.0.0 • DevTools 2.23.1