Что такое Gradle wrapper и gradlew.bat файл?

в последнее время я узнал силу Gradle как системы сборки, и как разработчик Android я хочу понять это глубоко .

в одной статье сказал следующее :-

" вы можете выполнить все задачи сборки, доступные для вашего проекта Android, с помощью инструмента командной строки Gradle wrapper. Он доступен в виде пакетного файла для Windows (gradlew.bat) и сценарий оболочки для Linux и Mac (gradlew.sh), и он доступен из корня каждого проекта, который вы создаете с помощью Android Studio."

для выполнения задач с оболочкой, используйте одну из следующих команд:

На Windows: gradlew задача-имя

теперь у меня есть некоторые сомнения, которые идут следующим образом: -

  1. что такое Gradle Wrapper и gradlew.летучая мышь ?
  2. если у меня установлена Android studio и она использует gradle для создания моих приложений (поэтому gradle уже установлен в моей системе), в этом случае мне все еще нужно установить gradle для построить цель из командной строки, как когда я пишу какие-либо похвалы, как gradle, gradlew в моей командной строке, я получаю сообщение об ошибке gradlew не распознается как внутренняя или внешняя команда ( та же ошибка для других команд) . Я могу использовать его на неправильном пути, помогите мне на каком пути мне нужно использовать команду, связанную с gradle ?
  3. если мне нужно скачать и установить его , как и где я могу найти файл ? и другие процессы ?

Я использую Машина Windows для этого.

3 ответов


оболочка Gradle является необязательной частью системы сборки Gradle. Он состоит из четырех файлов, которые вы проверяете в системе контроля версий. Сценарий запуска *nix <your root project>/gradlew, the <your root project>/gradlew.bat скрипт запуска Windows,<your root project>/gradle/wrapper/gradle-wrapper.jar который содержит файлы классов для оболочки и запускается сценариями запуска и <your root project>/gradle/wrapper/gradle-wrapper.properties который содержит некоторую конфигурацию для оболочки, например, какую версию Gradle использовать для создания проекта.

на мой взгляд, каждый проект Gradle в , даже самый крошечный, должен использовать обертку Gradle.

обертка Gradle гарантирует, что ваша сборка всегда выполняется с одной и той же версией Gradle, независимо от того, кто выполняет сборку и где или что Gradle установлен или нет, пока один использует обертку Gradle для сборки проекта. Это означает, что вы можете создать свою сборку для этой версии Gradle и быть уверены, что сборка не завершится неудачей, просто потому, что кто-то использует другую версию Gradle и, таким образом, также является важной шаг в воспроизводимости сборки.

кроме того, кто-то, желающий построить ваш проект, должен только установить Java, и все. Ему не нужно устанавливать какую-либо версию Gradle. Фактически любая уже установленная версия Gradle игнорируется. Обертка Gradle проверяет, находится ли в ~/.gradle/ версия, необходимая для сборки, уже присутствует, потому что какая-то оболочка Gradle любого проекта уже поместила ее туда. Если он уже присутствует, он используется, в противном случае он автоматически загруженный.

если ты типа gradlew в командной строке и команда не найдена, это означает, что вы не поместили свой путь к корневым проектам в переменную среды PATH (я бы тоже не рекомендовал это делать), а не находитесь в каталоге корневых проектов. Чтобы запустить сборку Gradle, вы должны быть в любом месте своего проекта и вызывать Gradle или оболочку Gradle. Но, как и с любым исполняемым файлом, который не находится на пути, вы должны указать его путь, конечно. Так что если вы находятся в корневом каталоге проекта, вы можете просто сделать gradlew. если вы в <root project dir>/foo/bar/ нужно позвонить ../../gradlew.

файлы оболочки Gradle генерируются неявно доступной задачей Gradle wrapper а затем получить регистрацию в VCS проекта в вопросе. Если эти четыре файла отсутствуют для проекта, он не использует оболочку Gradle, и вы должны отправить запрос на улучшение в проект, чтобы добавить его.

если какой-то проект не использует Gradle wrapper, но строит с Gradle, вы можете установить Gradle и использовать gradle вместо gradlew, или вы даже можете вызвать оболочку Gradle любого другого проекта, который у вас есть на диске. Затем сборка будет запущена с версией Gradle, которую использует оболочка или установка Gradle, и поэтому может вести себя не так, как ожидалось, поэтому на самом деле каждый проект должен использовать оболочку, если он использует Gradle.


  1. gradlew.bat-это обертка Gradle (для Windows в этом случае). Gradle Wrapper - это небольшая утилита, которая гарантирует, что Gradle установлен (или установите его, если необходимо), поэтому вы всегда можете создать проект. Сам Gradle позволяет управлять зависимостями и создавать конфигурации для вашего проекта.

  2. Если вы установили Android Studio, у вас установлен Gradle и хорошо идти. (Технически каждый проект будет иметь свою собственную оболочку для обработки установки / использования Gradle)

  3. Как я уже упоминал выше, вы хорошо идти.

в конце концов Gradle-это инструмент командной строки, который вы используете для создания своего проекта, и вы можете очень хорошо использовать его напрямую (хотя вам это не нужно), так как это именно то, что Android Studio использует для создания вашего проекта.


редактировать после комментария

Gradle-это система сборки.

этот gradle-wrapper является своего рода основным интерфейсом для создания проектов Android. Это часть Gradle-build-system и делает некоторую первичную проверку, установлен ли gradle или нет.

gradlew.bat - Это пакетным файлом используется в Windows. Вы даже можете открыть его с помощью блокнота, чтобы просмотреть инструкции в нем. Пакетные файлы похожи на "команды", написанные в файле для выполнения. Вы используете его (в случае Windows) для выполнения команд сборки. Он также проверяет, установлен ли gradle или нет. И в случае, если это не так, он загружает и устанавливает его.

пример: для создания android-приложения на Windows:

  • открыть командную строку
  • перейдите в корневой каталог вашего проекта
  • выполнить gradlew.bat assembleDebug

он запускает обертку, проверяет, установлен ли там Gradle и выполняет все ' gradle конкретные команды для построения проекта.

вам нужно установить Gradle ?

на самом деле, нет. Его работа этого сценария gradlew, чтобы проверить это. Если gradle его еще нет, он автоматически загрузит его и использует для всех последующих сборок.