Gradle 7, устарела ли документация по настройке сборки Android?

#android #gradle #documentation #android-gradle-7.0

Вопрос:

Просматривая документацию по конфигурации сборки Gradle, я вижу несколько конфликтов с моей сборкой при Android Studio 2020.3.1 использовании Gradle 7.0.3 .

Например, в документации говорится, что allProjects блок настроек репозиториев, используемых всеми модулями, должен быть добавлен в корень build.gradle , в то время как на самом деле он позволяет мне настраивать репозитории модулей только в блоке settings.gradle under dependencyResolutionManagement .

Другим примером является применение плагинов к модулям приложений, в документации говорится, что первая строка должна быть:

 apply plugin: 'com.android.application'
 

В то время как в моей сборке используется:

 plugins {
    id 'com.android.application'
}
 

Я также заметил, что также JitPack использует те же конфигурации, предложенные на этой странице документации, для использования опубликованной библиотеки JitPack в проектах:

Добавьте его в свой корневой build.gradle в конце репозиториев:

 allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
 

Шаг 2. Добавьте зависимость

 dependencies {
        implementation 'com.github.arcm111.ScaleNumberPicker:final:1.0.1'
}
 

Итак, мой вопрос в том, устарели ли эти страницы документации, поддерживаются ли Gradle 7 они еще не полностью, или я смотрю на неправильную документацию?

Ответ №1:

в документации говорится, что блок allProjects для настроек репозиториев, используемых всеми модулями, должен быть добавлен в корневой build.gradle, хотя на самом деле он позволяет мне настраивать репозитории модулей только в settings.gradle в блоке dependencyResolutionManagement.

Возможно, вы захотите задать отдельный вопрос о переполнении стека с минимальным проверяемым примером и подробным описанием ваших ошибок. Это репозиторий GitLab, в теге v2.2 содержит многомодульный проект Android Studio с использованием Gradle 7.0.2, который используется allProjects для настройки репозиториев.

Другим примером является применение плагинов к модулям приложений, в документации говорится, что первая строка должна быть… В то время как в моей сборке используется

Любой синтаксис работает. Этот plugins подход был доступен в течение года или около того в проектах Android Studio. Проект, на который я ссылался выше, использует более старый apply plugin синтаксис. Этот пример проекта, напротив, использует plugins .

эти страницы документации устарели, Gradle 7 еще не полностью поддерживается, или я смотрю на неправильную документацию?

Ничего из вышеперечисленного, AFAICT. allProjects и apply plugin все еще работает, по крайней мере, с Gradle 7.0.2.

Комментарии:

1. Когда я добавляю allProjects к верхнему уровню build.gradle , выдает следующую ошибку Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 'build.gradle'

2. @razz: IIRC, в вашем есть что-то settings.gradle , что говорит Gradle не хотеть allprojects .

3. Это settings.gradle содержимое моего файла : dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } } rootProject.name = "SNPTest" include ':app' . Это тот, который создан Android Studio, я не менял никаких настроек.

4. @razz: удалите dependencyResolutionManagement закрытие. В нем конкретно говорится «не поддерживать репозитории на основе проектов», что allProjects является частью.

5. Что меня интересует, так это то, что если в Gradle сейчас используется конфигурация по умолчанию, то не следует ли обновлять документацию Android, чтобы она соответствовала последней версии Gradle?