🤦‍♂️

[凡ミス]Android StudioのGradle/Gradle pluginについて

2020/11/03に公開

凡ミスした結果Gradleについて少し勉強できた.

内容はしょうもないミス.ただ,初心者は意外とこういうミスでハマったりするので,Gradleについての基礎とあわせ,自分の恥ずかしいミスについて紹介させてください.

「アプリのbuild.gradleファイルに~」と書かれていたら.
build.gradle(:app)のことですよ!!!

ただGradleについてのいい勉強になったのでメモ.

やろうとしたこと

NavigationEditorを使いたくて,公式ガイドを参考に作業しようとした.
Navigation コンポーネント スタートガイド  |  Android デベロッパー  |  Android Developers

プロジェクトにナビゲーション サポートを組み込むには、アプリの build.gradle ファイルに以下の依存関係を追加します。

ここで僕はミスり,build.gradle(プロジェクト名)のdependenciesにコードを追加してしまった.

起きたこと

Gradleエラーが出,わけが分からずバージョンをいじってさらに深刻化してしまった.

解決策

  • コードの修正(正しい場所へ追加し直した)
  • ぐちゃぐちゃになってしまったGradle とGradle pluginのバージョンを直した.

Gradle Gradle pluginのバージョンについて

ビルドシステムであるGradleを利用できるようにするのがGradle pluginなのだが,それぞれの対応しているバージョンが異なる.

例えばGradle pluginのバージョンが4.0.0の際に必要なGradleのバージョンは6.1.1以降となる.ややこしい…

GradleとGradle pluginのバージョン確認と変更

Android Studio上で
⌘ ; またはFile>Project Structureを開きバージョンを揃える.


以下,凡ミスに気づかなかったときの迷走ぶりを紹介

混乱している当時のメモです.

エラーの内容

Gradle DSL method not found: 'implementation()'
Possible causes:
The project 'projectname' may be using a version of the Android Gradle plug-in that does not contain the method (e.g. 'testCompile' was added in 1.1.0).
Upgrade plugin to version 4.0.1 and sync project

The project 'omikuji' may be using a version of Gradle that does not contain the method.
Open Gradle wrapper file

The build file may be missing a Gradle plugin.
Apply Gradle plugin

Gradleのバージョンがあってないらしい.
そもそもGradleとは?
Gradle入門 - Qiita
ビルドシステムの一種らしい.

一度追加したコードをコメントアウトし,
https://developer.android.com/studio/releases/gradle-plugin.html
GradleとGradle pluginのバージョンを対応させる.

エラーが消えた.
コードを戻すとまたエラー.
このコードの中に何があるんだ?

// Navigation-editor
def nav_version = "2.3.1"

implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"


アホですね−.
植えた木にうまく果実がならないときは,まずはそもそも植えたものが正しいかどうかを確認しましょう!!!

参考

Discussion