SlideShare a Scribd company logo
Gradle
Степанов Павел
Android Internship 2014
Система автоматической сборки Gradle
Системы автоматической
сборки
• Сборка на разных платформах
– Windows
– Linux
• Ускорение сборки
• Управление зависимостями проекта
• Автоматическое создание:
– JavaDoc
– Web-страниц проекта
– Отчетов о тестировании
• Непрерывная интеграция
– Автоматизация сборки
– Автоматизированное тестирование
Система автоматической сборки Gradle
Apache Ant
• XML-сценарий сборки build.xml
• Императивная настройка сборки
• Проект состоит из целей (target)
• Цели могут зависеть друг от друга
• Цели состоят из вызовов задач (task)
Система автоматической сборки Gradle
Apache Ant
Система автоматической сборки Gradle
Apache Maven
• XML-сценарий сборки pom.xml
• Декларативная настройка сборки проекта
• Стандартная структура директорий
• Maven-репозиторий
• Управление зависимостями
• Жизненный цикл проекта (clean, compile,
test, package, install, deploy)
• Плагины для сборки проекта
Система автоматической сборки Gradle
Apache Maven
Система автоматической сборки Gradle
Системы автоматической
сборки
Ant Maven Gradle
Система автоматической сборки Gradle
Gradle
• Основан на языке Groovy
– Статическая и динамическая типизация
– Замыкания
– Перегрузка операций
– Улучшенный синтаксис Java
• Полноценный DSL
• Направленный ациклический граф задач
• Встроенная поддержка задач Apache Ant
• Императивное описание задачи
• Интеграция с Maven-репозиторием
• Стандартная структура директорий
• Плагины для сборки проекта, настраиваемые декларативно
• Gradle Daemon, Wrapper
Система автоматической сборки Gradle
Gradle
Система автоматической сборки Gradle
Структура директорий
build/
src/ main/
java/
resources/
build.gradle
Система автоматической сборки Gradle
Структура директорий Android
• app/
• gradle/
– wrapper/
• gradle-wrapper.jar
• gradle-wrapper.properties
– .gitignore
– build.gradle
– gradlew
– gradlew.bat
– local.properties
– settings.gradle
• app/
– build/
– libs/
– src/
• main/
– java/
– res/
– AndroidManifest.xml
– .gitignore
– build.gradle
– proguard.pro
Система автоматической сборки Gradle
Структура директорий Android
• app/ – директория модуля
• gradle/ – вспомогательная директория Gradle
• gradle/wrapper/ – файлы Gradle Wrapper
• .gitignore –список файлов, игнорируемых Git
• build.gradle – build-скрипт Gradle
• gradlew, gradlew.bat – файлы Gradle Wrapper
• local.properties – путь до Android SDK
• settings.gradle – список модулей проекта
Система автоматической сборки Gradle
Структура директорий Android
• app/build/ - директория для хранения результатов
сборки
• app/libs/ – библиотеки
• app/src/ – исходный код проекта
• app/src/main/java – Java-классы
• app/src/main/res – ресурсы
• app/src/main/AndroidManifest.xml – файл Android
Manifest
• app/.gitignore –список файлов, игнорируемых Git
• app/build.gradle – build-скрипт Gradle
• app/proguard.pro – файл настройки ProGuard
Система автоматической сборки Gradle
Build Script
• allprojects {}
– Configures this project and each of its sub-projects.
• buildscript {}
– Configures the build script classpath for this
project.
• repositories {}
– Configures the repositories for this project.
• dependencies {}
– Configures the dependencies for this project.
Система автоматической сборки Gradle
./build.gradle
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
}
allprojects {
repositories {
jcenter()
}
}
Система автоматической сборки Gradle
./build.gradle
• buildscript – настройка build-скрипта Gradle
– repositories – откуда нужно качать зависимости.
– dependencies – какие зависимости нужны. В данном случае
нужен только Gradle-плагин для сборки Android-проектов.
– Этот плагин для сборки регистрируется как зависимость
build-скрипта. Для этого указывается его группа – ‘com.
android.tools.build’, идентификатор в группе – ‘gradle’ и
желаемая версия – ‘0.12.+’.
• allprojects – настройки для всех проектов (т.е. для
каждого модуля)
– repositories – чтобы не указывать в каждом модуле, что его
зависимости можно скачивать из стандартного репозитория
jCentral.
Система автоматической сборки Gradle
./settings.gradle
include ‘:app’
Система автоматической сборки Gradle
./app/build.gradle
apply plugin: ‘com.android.application’
android {
compileSdkVersion 19
buildToolsVersion ’20.0.0’
defaultConfig {
applicationId ‘com.example.myapplication’
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName ‘1.0’
}
}
dependencies {
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
}
Система автоматической сборки Gradle
./app/build.gradle
• apply – применяет к проекту заданный плагин для
сборки. Этот плагин добавляет задачи для сборки,
такие как clean, assemble, build, install и другие. В
данном случае применяется плагин ‘com.android.
application’.
• android – эта секция содержит настройки для плагина
Android.
– compileSdkVersion – версия SDK для компиляции
– buildToolsVersion – версия утилит для сборки APK
– defaultConfig – дополнительные параметры: ID, версия,
minSdkVersion, targetSdkVersion и т. д.
• dependencies – список зависимостей проекта-модуля.
Система автоматической сборки Gradle
Android Library Build
apply plugin: ‘com.android.library’
android {
compileSdkVersion 19
buildToolsVersion ’20.0.0’
defaultConfig {
applicationId ‘com.mylibrary’
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName ‘1.0’
}
}
dependencies {
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
}
Система автоматической сборки Gradle
Dependencies
• compile fileTree(dir: ‘libs’, include: [‘*.jar’])
• compile project(‘:mylibrary’)
• compile ‘com.squareup.picasso:picasso:2.3.2’
Система автоматической сборки Gradle
Build variants
Build type
Product
flavor
Build
variant
Система автоматической сборки Gradle
Build variants
• src/main
• src/<buildType>
– src/debug
– src/release
• src/<flavorName>
– src/demo
– src/full
Система автоматической сборки Gradle
Build variants
android {
defaultConfig { … }
buildTypes { … }
productFlavors {
demo {
applicationId ‘com.application.demo’
versionName ‘1.0-demo’
}
full {
applicationId ‘com.application.full’
versionName ‘1.0-full’
}
}
}
Конец
Система автоматической сборки
Gradle

More Related Content

PPTX
Gradle. Новый уровень автоматизации для Android
PDF
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
PPTX
Gradle. Новый уровень автоматизации для Android
PDF
04 - Android 6. Добавление драйвера
PDF
03 - Android 6. Gradle
PDF
Иван Крутов - Автоматизация сборки Java-проекта
PPTX
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
PPTX
Мастер класс- Maven + Jenkins
Gradle. Новый уровень автоматизации для Android
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Gradle. Новый уровень автоматизации для Android
04 - Android 6. Добавление драйвера
03 - Android 6. Gradle
Иван Крутов - Автоматизация сборки Java-проекта
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Мастер класс- Maven + Jenkins

What's hot (20)

PPTX
Никита Галкин "Testing in Node.js World"
PDF
Введение в maven
PPTX
"React application structure at project start", Maksym Shestopal
PPTX
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
PPTX
Angular vs Angular 2 vs React. Сергей Александров
PDF
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
PDF
AwReporting tool introduction (russian)
PDF
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
PDF
Системы автоматизированной сборки (Lecture 05 – gradle)
PDF
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
PDF
Введение в Android-разработку (Lecture 06 – basics)
PDF
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
PDF
CD with Jenkins. Lessons Learned
PPTX
Что нового в Visual Studio 2015
PDF
CodeFest 2012. Курносова Т. и Баяндин А. — Selenium2: полевые испытания
PPTX
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
PPTX
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
PDF
Jenkins Imperative Pipeline vs Declarative Pipeline
PPTX
Docker + Selenium Webdriver в рамках Continuous Integration
PDF
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Никита Галкин "Testing in Node.js World"
Введение в maven
"React application structure at project start", Maksym Shestopal
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Angular vs Angular 2 vs React. Сергей Александров
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
AwReporting tool introduction (russian)
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
Системы автоматизированной сборки (Lecture 05 – gradle)
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Введение в Android-разработку (Lecture 06 – basics)
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
CD with Jenkins. Lessons Learned
Что нового в Visual Studio 2015
CodeFest 2012. Курносова Т. и Баяндин А. — Selenium2: полевые испытания
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Comfortable drupal project development. Useful modules (Andriy Yun, studio de...
Jenkins Imperative Pipeline vs Declarative Pipeline
Docker + Selenium Webdriver в рамках Continuous Integration
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Ad

Viewers also liked (20)

PDF
Что нужно знать начинающему разработчику на Android
PDF
Android - 09 - Fragments
PDF
Android - 08 - Action bar
PDF
Работа с графической подсистемой (Lecture 10 – Graphics)
PDF
Android - 14 - Geodata
PDF
Web Internship - PHP and MySQL
PDF
Android - 13 - Database
PDF
Web-02-Intermediate PHP
PDF
Android - 15 - Social
PDF
Android - 16 - QR
PDF
Android - 10 - Graphics
PDF
iOS-05_1-UIKit
PDF
Разработка мобильных приложений ДЛЯ ДЕТЕЙ
PPTX
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
PDF
Web internship java script
PDF
Android - 04 - Internship project introduction
PDF
AR открытки: дополненная реальность к 8 марта
PDF
Web-01-Basic PHP
PDF
Database (Lecture 14 – database)
PDF
Android - 07 - User Interface
Что нужно знать начинающему разработчику на Android
Android - 09 - Fragments
Android - 08 - Action bar
Работа с графической подсистемой (Lecture 10 – Graphics)
Android - 14 - Geodata
Web Internship - PHP and MySQL
Android - 13 - Database
Web-02-Intermediate PHP
Android - 15 - Social
Android - 16 - QR
Android - 10 - Graphics
iOS-05_1-UIKit
Разработка мобильных приложений ДЛЯ ДЕТЕЙ
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
Web internship java script
Android - 04 - Internship project introduction
AR открытки: дополненная реальность к 8 марта
Web-01-Basic PHP
Database (Lecture 14 – database)
Android - 07 - User Interface
Ad

Similar to Android - 06 - Gradle (20)

PPT
Apache maven in java projects
PPTX
Cистемы автоматической сборки проектов (Полина Фоминых)
PDF
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
PDF
NPM и модульная архитектура приложения
PDF
Gradle Introduction
PPT
Инструменты разработки ПО в *nix
PDF
Корпоративное приложение на Rails
PPTX
JavaScript-модули "из прошлого в будущее"
PDF
Юрий Василевский «Автоматизация в XCode»
PDF
Юрий Василевский "Автоматизация в XCode"
PDF
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
PPTX
Tizen for Wearable Development Gear2 Danilov
PPT
Yulia tsuba
PDF
Java cloud platforms. jee conf 2012
PDF
Java cloud platforms. jee conf 2012
PDF
It meetup cd
PDF
Meet Magento Belarus 2015: Denis Bosak
PDF
Oleksandr Tolstykh "Quality. Android quality"
PDF
UWDC 2013, Как мы используем Yii
PPT
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Apache maven in java projects
Cистемы автоматической сборки проектов (Полина Фоминых)
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
NPM и модульная архитектура приложения
Gradle Introduction
Инструменты разработки ПО в *nix
Корпоративное приложение на Rails
JavaScript-модули "из прошлого в будущее"
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский "Автоматизация в XCode"
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Tizen for Wearable Development Gear2 Danilov
Yulia tsuba
Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012
It meetup cd
Meet Magento Belarus 2015: Denis Bosak
Oleksandr Tolstykh "Quality. Android quality"
UWDC 2013, Как мы используем Yii
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)

More from Noveo (20)

PPTX
Гуманитарные специальности в IT-индустрии
PPTX
Box model, display and position (HTML5 тема 07 - box model, display position)
PPTX
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
PPTX
Стилизация текста (HTML5 тема 05 - стилизация текста)
PPTX
Семантика текста (HTML5 тема 04 - семантика текста)
PPTX
Основы CSS (HTML5 тема 02 - основы CSS)
PPTX
Структура HTML документа (HTML5 тема 01 - структура html документа)
PPTX
Yii2
PPTX
Сессии и авторизация
PPTX
Rest
PPTX
PHP basic
PPTX
PHP Advanced
PPTX
PHP and MySQL
PPTX
MySQL
PDF
Push Notifications (Lecture 22 – push notifications)
PDF
RxJava+RxAndroid (Lecture 20 – rx java)
PDF
Работа с соцсетями (Lecture 19 – social)
PDF
Работа с геоданными (Lecture 18 – geolocation)
PDF
Animations (Lecture 17 – animations)
PDF
Toolbar (Lecture 16 – toolbar)
Гуманитарные специальности в IT-индустрии
Box model, display and position (HTML5 тема 07 - box model, display position)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Стилизация текста (HTML5 тема 05 - стилизация текста)
Семантика текста (HTML5 тема 04 - семантика текста)
Основы CSS (HTML5 тема 02 - основы CSS)
Структура HTML документа (HTML5 тема 01 - структура html документа)
Yii2
Сессии и авторизация
Rest
PHP basic
PHP Advanced
PHP and MySQL
MySQL
Push Notifications (Lecture 22 – push notifications)
RxJava+RxAndroid (Lecture 20 – rx java)
Работа с соцсетями (Lecture 19 – social)
Работа с геоданными (Lecture 18 – geolocation)
Animations (Lecture 17 – animations)
Toolbar (Lecture 16 – toolbar)

Android - 06 - Gradle

  • 2. Система автоматической сборки Gradle Системы автоматической сборки • Сборка на разных платформах – Windows – Linux • Ускорение сборки • Управление зависимостями проекта • Автоматическое создание: – JavaDoc – Web-страниц проекта – Отчетов о тестировании • Непрерывная интеграция – Автоматизация сборки – Автоматизированное тестирование
  • 3. Система автоматической сборки Gradle Apache Ant • XML-сценарий сборки build.xml • Императивная настройка сборки • Проект состоит из целей (target) • Цели могут зависеть друг от друга • Цели состоят из вызовов задач (task)
  • 5. Система автоматической сборки Gradle Apache Maven • XML-сценарий сборки pom.xml • Декларативная настройка сборки проекта • Стандартная структура директорий • Maven-репозиторий • Управление зависимостями • Жизненный цикл проекта (clean, compile, test, package, install, deploy) • Плагины для сборки проекта
  • 7. Система автоматической сборки Gradle Системы автоматической сборки Ant Maven Gradle
  • 8. Система автоматической сборки Gradle Gradle • Основан на языке Groovy – Статическая и динамическая типизация – Замыкания – Перегрузка операций – Улучшенный синтаксис Java • Полноценный DSL • Направленный ациклический граф задач • Встроенная поддержка задач Apache Ant • Императивное описание задачи • Интеграция с Maven-репозиторием • Стандартная структура директорий • Плагины для сборки проекта, настраиваемые декларативно • Gradle Daemon, Wrapper
  • 10. Система автоматической сборки Gradle Структура директорий build/ src/ main/ java/ resources/ build.gradle
  • 11. Система автоматической сборки Gradle Структура директорий Android • app/ • gradle/ – wrapper/ • gradle-wrapper.jar • gradle-wrapper.properties – .gitignore – build.gradle – gradlew – gradlew.bat – local.properties – settings.gradle • app/ – build/ – libs/ – src/ • main/ – java/ – res/ – AndroidManifest.xml – .gitignore – build.gradle – proguard.pro
  • 12. Система автоматической сборки Gradle Структура директорий Android • app/ – директория модуля • gradle/ – вспомогательная директория Gradle • gradle/wrapper/ – файлы Gradle Wrapper • .gitignore –список файлов, игнорируемых Git • build.gradle – build-скрипт Gradle • gradlew, gradlew.bat – файлы Gradle Wrapper • local.properties – путь до Android SDK • settings.gradle – список модулей проекта
  • 13. Система автоматической сборки Gradle Структура директорий Android • app/build/ - директория для хранения результатов сборки • app/libs/ – библиотеки • app/src/ – исходный код проекта • app/src/main/java – Java-классы • app/src/main/res – ресурсы • app/src/main/AndroidManifest.xml – файл Android Manifest • app/.gitignore –список файлов, игнорируемых Git • app/build.gradle – build-скрипт Gradle • app/proguard.pro – файл настройки ProGuard
  • 14. Система автоматической сборки Gradle Build Script • allprojects {} – Configures this project and each of its sub-projects. • buildscript {} – Configures the build script classpath for this project. • repositories {} – Configures the repositories for this project. • dependencies {} – Configures the dependencies for this project.
  • 15. Система автоматической сборки Gradle ./build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:0.12.+' } } allprojects { repositories { jcenter() } }
  • 16. Система автоматической сборки Gradle ./build.gradle • buildscript – настройка build-скрипта Gradle – repositories – откуда нужно качать зависимости. – dependencies – какие зависимости нужны. В данном случае нужен только Gradle-плагин для сборки Android-проектов. – Этот плагин для сборки регистрируется как зависимость build-скрипта. Для этого указывается его группа – ‘com. android.tools.build’, идентификатор в группе – ‘gradle’ и желаемая версия – ‘0.12.+’. • allprojects – настройки для всех проектов (т.е. для каждого модуля) – repositories – чтобы не указывать в каждом модуле, что его зависимости можно скачивать из стандартного репозитория jCentral.
  • 17. Система автоматической сборки Gradle ./settings.gradle include ‘:app’
  • 18. Система автоматической сборки Gradle ./app/build.gradle apply plugin: ‘com.android.application’ android { compileSdkVersion 19 buildToolsVersion ’20.0.0’ defaultConfig { applicationId ‘com.example.myapplication’ minSdkVersion 14 targetSdkVersion 19 versionCode 1 versionName ‘1.0’ } } dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) }
  • 19. Система автоматической сборки Gradle ./app/build.gradle • apply – применяет к проекту заданный плагин для сборки. Этот плагин добавляет задачи для сборки, такие как clean, assemble, build, install и другие. В данном случае применяется плагин ‘com.android. application’. • android – эта секция содержит настройки для плагина Android. – compileSdkVersion – версия SDK для компиляции – buildToolsVersion – версия утилит для сборки APK – defaultConfig – дополнительные параметры: ID, версия, minSdkVersion, targetSdkVersion и т. д. • dependencies – список зависимостей проекта-модуля.
  • 20. Система автоматической сборки Gradle Android Library Build apply plugin: ‘com.android.library’ android { compileSdkVersion 19 buildToolsVersion ’20.0.0’ defaultConfig { applicationId ‘com.mylibrary’ minSdkVersion 14 targetSdkVersion 19 versionCode 1 versionName ‘1.0’ } } dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) }
  • 21. Система автоматической сборки Gradle Dependencies • compile fileTree(dir: ‘libs’, include: [‘*.jar’]) • compile project(‘:mylibrary’) • compile ‘com.squareup.picasso:picasso:2.3.2’
  • 22. Система автоматической сборки Gradle Build variants Build type Product flavor Build variant
  • 23. Система автоматической сборки Gradle Build variants • src/main • src/<buildType> – src/debug – src/release • src/<flavorName> – src/demo – src/full
  • 24. Система автоматической сборки Gradle Build variants android { defaultConfig { … } buildTypes { … } productFlavors { demo { applicationId ‘com.application.demo’ versionName ‘1.0-demo’ } full { applicationId ‘com.application.full’ versionName ‘1.0-full’ } } }