事象
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