4
3

More than 1 year has passed since last update.

FlutterプロジェクトでのGradleのアップグレード方法とpackage_info_plusを4.0.1にアップグレードした際のエラー解消

Posted at

事象

package_info_plus4.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 taskassembleReleaseが失敗している様です。

原因

以下の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になっているそうです。

android/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
android/build.gradle
dependencies {
  classpath 'com.android.tools.build:gradle:4.1.0'
}

対応

プロジェクトで使用しているGradle Pluginと参照するGradleのバージョンをアップグレードします。

アップグレード可能なGradleバージョンは以下で確認します

gradleのリリース情報

android/gradle/wrapper/gradle-wrapper.propertiesdistributionUrlで参照しているパスはこちらなのでここから探すことも可能です。

android/gradle/wrapper/gradle-wrapper.properties
- distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip
android/build.gradle
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
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3