In Android Studio Arctic Fox Canary 8, the app level build.gradle does not generate `allprojects` section and causes error when manually added
AndroidAndroid StudioGradleAndroid 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
- include ':app' (Put in First line)
- 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'