In Android Studio Arctic Fox Canary 8, the app level build.gradle does not generate `allprojects` section and causes error when manually added

AndroidAndroid StudioGradle

Android Problem Overview


When creating a new project in Android Studio Arctic Fox Canary 8, this is the app level build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.0-alpha08"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30"

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

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

When creating the same new project in the Android Studio 4.1.2, the app-level build.gradle file is this:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    ext.kotlin_version = "1.3.72"
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.2"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

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

allprojects {
    repositories {
        google()
        jcenter()
    }
}

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

One of the libraries I am using requires the allprojects

I manually tried to add the allprojects section in Canary 8, received this error:

 problem occurred evaluating root project 'My Application'.
> Build was configured to prefer settings repositories over project repositories but repository 'Google' was added by build file 'build.gradle'

Why was the allprojects in Android Studio Canary 8 was removed and how can I add it back so that I can use the libraries?

Android Solutions


Solution 1 - Android

In settings.gradle you can add the repositories you want to add to the project

dependencyResolutionManagement {
   repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
   repositories {
      google()
      mavenCentral()
      jcenter()
      maven { url "https://maven.xyz.com" }
    }
}

Solution 2 - Android

In settings.gradle just comment out the whole block

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}

Solution 3 - Android

Go to setting.gradle and replace the line:

repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)

with:

repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)

That's a gradle setting which allows this to work.

Solution 4 - Android

>In new release of Android, provide a new way to define your repositories. Before this release we used build.gradle(Project level) file to define repositories. Now you should write then into settings.gradle file. That's why It collides with Gradle plugin and generate this error message:

Build was configured to prefer settings repositories over project repositories but repository 'Google' was added by build file 'build.gradle'

We can solve it in two possible ways.

Solution 1:

>Use previous way: Not to use dependencyResolutionManagement for repositories in settings.gradle file

Just keep settings.gradle file like below:

/*dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}*/
rootProject.name = "YourAppName"
include ':app'

Keep build.gradle(Project level) like below;

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.0"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21"
        classpath 'com.google.gms:google-services:4.3.10' // If you use
    }
}

allprojects {
    repositories {
        // Check that you have the following line (if not, add it):
        google()  // Google's Maven repository
        mavenCentral()
    }
}

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

Change or add the line at top of the build.gradle(Module level)

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'com.google.gms.google-services' // If you use
}

Solution 2:

>Use new way: Use dependencyResolutionManagement for repositories in settings.gradle file

Just keep settings.gradle file like below:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "YourAppName"
include ':app'

Keep build.gradle(Project level) like below:

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.0"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21"
        classpath 'com.google.gms:google-services:4.3.10' // If you use
    }
}

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

Keep build.gradle(Module level) file as previous:

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'com.google.gms.google-services'// If you use
}

Hopefully you overcome your problem.

Solution 5 - Android

allProjects{} block is removed from the updated version of gradle. So, in settings.gradle you can add the repositories you want to download and add to the project

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon

        maven {
            url 'https://your/url/to/download/repository/'
            credentials {
                username = "your username"
                password = "your password"
            }
        }
    }
}
rootProject.name = "My Application"
include ':app'

Solution 6 - Android

just keep this line in settings.gradle

  1. include ':app' (Put in First line)
  2. comment rest of code if any.

Solution 7 - Android

Google has made some changes in the project label Gradle.

you can fix this by removing all project label configuration to setting.gradle file.

allprojects {
    repositories {
        // Check that you have the following line (if not, add it):
        google()  // Google's Maven repository
        mavenCentral()
    }
}

Remove this code in the Gradle file and all your plugins code in setting.gradle file. Like below.

    pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
    plugins {
        id 'com.android.application' version '7.1.0-alpha03'
        id 'com.android.library' version '7.1.0-alpha03'
        id 'org.jetbrains.kotlin.android' version '1.5.10'
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "MVVMDEMO"
include ':app'

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondsfView Question on Stackoverflow
Solution 1 - AndroidS HaqueView Answer on Stackoverflow
Solution 2 - Androidshasia858View Answer on Stackoverflow
Solution 3 - AndroidAbdullah FahadView Answer on Stackoverflow
Solution 4 - AndroidSubarata TalukderView Answer on Stackoverflow
Solution 5 - AndroidRahulView Answer on Stackoverflow
Solution 6 - AndroidNidhiView Answer on Stackoverflow
Solution 7 - AndroidRajneesh ShuklaView Answer on Stackoverflow