🌟

【Flutter】Andoroidのbuild.gradleでのビルドエラー(ほぼ備忘録)

2023/04/01に公開

よくこれに当たるのはなぜなんだろう。

発生したこと

only buildscript {}, pluginManagement {} and other plugins {} script blocks 
are allowed before plugins {} blocks, no other statements are allowed

とのこと。要は、、

buildscript {}、pluginManagement {}、及びplugins {} スクリプト ブロックのみが plugins {} ブロックの前に許可され、他のは許可されません」
ので

plugins {
    id 'hoge'
}

を1行目に差し替えた。すると治った。

また、

  • def localProperties = new Properties()など、普通のgradleコードの後ろに書くと同じように怒られるので、結論は

plugins{}ブロックは最初に記述しよう

と言うことを覚えておこう俺。

なぜplugins{}を一番最初におかないといけない?

そもそもその理由を調べる。公式ドキュメントから確認しよう
すると、、

This requires that plugins be specified in a way that Gradle can easily and quickly extract, before executing the rest of the build script. It also requires that the definition of plugins to use be somewhat static.
とあります。

これは

これには、残りのビルド スクリプトを実行する前に、Gradle が簡単かつ迅速に抽出できる方法でプラグインを指定する必要があります。また、使用するプラグインの定義がある程度静的である必要があります。

という訳で、他のすべてのbuild scriptを実行する前に読み込んで指定しとけ。ってことですな。

Dartでもまずimport 'package:flutter/......'的なimportがあるが、それと同じ感じっぽい。

by弱々えんじにあ

GitHubで編集を提案

Discussion