'Where and how to add classpath dependencies in gradle 7.2?

For android project created with gradle 7.2, the project gradle is very different from the previous ones, it now only contains these

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    id 'com.android.application' version '7.1.2' apply false
    id 'com.android.library' version '7.1.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.6.10' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

The settings.gradle is also very different from before, it now contains more configurations with the following

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
//        classpath 'com.google.gms:google-services:4.3.10'
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "My App"
include ':app'

Where can I add the classpath for classpath 'com.google.gms:google-services:4.3.10'? When I add this to the settings.gradle, it fails to compile with error: "Could not find method classpath() for arguments [com.google.gms:google-services:4.3.10] on repository container of type org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler"



Solution 1:[1]

I think with gradle version 7.2 you don't really need to specify the classpath, check doc1, doc2. Just insert plugin id on project level build.gradle:

plugins {
    ...
    id "com.google.gms.google-services" version "4.3.10" apply false
}

and don't forget to copy-paste it on app level build.gradle:

plugins {
    ...
    id "com.google.gms.google-services"
}

To check if the plugin is applied correctly, you can print the list of available plugins from another answer.

Solution 2:[2]

add setting.gradle like this

   dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
        maven { url "https://jitpack.io" }
        maven { url "https://android-sdk.tapdaq.com" }
    }
    }
    rootProject.name = "App Name"
    include ':app'

buils.gradle(project level)

buildscript {
ext.kotlin_version = "1.6.10"
ext.kotlincoroutine_version = '1.5.1'
ext.coroutineadapter_version = '0.9.2'
ext.gradle_version = '3.5.0'
ext.retrofit_version = '2.9.0'
ext.gson_version = '2.8.7'
ext.okhttp_version = '4.9.0'
ext.glide_version = '4.12.0'

repositories {
    google()
    mavenCentral()
}
dependencies {
    classpath "com.android.tools.build:gradle:7.0.4"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
  }
}

Solution 3:[3]

https://docs.gradle.org/7.2/userguide/plugins.html#sec:applying_plugins_buildscript Example 13. Applying a plugin with the buildscript block

buildscript {
    repositories {
        gradlePluginPortal()
    }
    dependencies {
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5'
    }
}

apply plugin: 'com.jfrog.bintray'

Solution 4:[4]

paste code for your build-script class file in project-level gradle.build file, here is an example :

/**
 * project-level - build.gradle file -- make sure buildscript is before 
 * plugins
**/
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.41'
    }
}

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    id 'com.android.application' version '7.1.3' apply false
    id 'com.android.library' version '7.1.3' apply false
    id 'org.jetbrains.kotlin.android' version '1.6.20' apply false
}


task clean(type: Delete) {
    delete rootProject.buildDir
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Jayesh Dankhara
Solution 3 Tiejun She
Solution 4 Chetan Gupta