SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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

Was ist angesagt? (20)

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

Andere mochten auch

Что нужно знать начинающему разработчику на Android
Что нужно знать начинающему разработчику на AndroidЧто нужно знать начинающему разработчику на Android
Что нужно знать начинающему разработчику на AndroidIlya Blokh
 
Android - 09 - Fragments
Android - 09 - FragmentsAndroid - 09 - Fragments
Android - 09 - FragmentsNoveo
 
Android - 08 - Action bar
Android - 08 - Action barAndroid - 08 - Action bar
Android - 08 - Action barNoveo
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Noveo
 
Android - 14 - Geodata
Android - 14 - GeodataAndroid - 14 - Geodata
Android - 14 - GeodataNoveo
 
Web Internship - PHP and MySQL
Web Internship - PHP and MySQLWeb Internship - PHP and MySQL
Web Internship - PHP and MySQLNoveo
 
Android - 13 - Database
Android - 13 - DatabaseAndroid - 13 - Database
Android - 13 - DatabaseNoveo
 
Web-02-Intermediate PHP
Web-02-Intermediate PHPWeb-02-Intermediate PHP
Web-02-Intermediate PHPNoveo
 
Android - 15 - Social
Android - 15 - SocialAndroid - 15 - Social
Android - 15 - SocialNoveo
 
Android - 16 - QR
Android - 16 - QRAndroid - 16 - QR
Android - 16 - QRNoveo
 
Android - 10 - Graphics
Android - 10 - GraphicsAndroid - 10 - Graphics
Android - 10 - GraphicsNoveo
 
iOS-05_1-UIKit
iOS-05_1-UIKitiOS-05_1-UIKit
iOS-05_1-UIKitNoveo
 
Разработка мобильных приложений ДЛЯ ДЕТЕЙ
Разработка мобильных приложений ДЛЯ ДЕТЕЙРазработка мобильных приложений ДЛЯ ДЕТЕЙ
Разработка мобильных приложений ДЛЯ ДЕТЕЙEligoVision
 
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...Pavel Tsukanov
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java scriptNoveo
 
Android - 04 - Internship project introduction
Android - 04 - Internship project introductionAndroid - 04 - Internship project introduction
Android - 04 - Internship project introductionNoveo
 
AR открытки: дополненная реальность к 8 марта
AR открытки: дополненная реальность к 8 мартаAR открытки: дополненная реальность к 8 марта
AR открытки: дополненная реальность к 8 мартаEligoVision
 
Web-01-Basic PHP
Web-01-Basic PHPWeb-01-Basic PHP
Web-01-Basic PHPNoveo
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)Noveo
 
Android - 07 - User Interface
Android - 07 - User InterfaceAndroid - 07 - User Interface
Android - 07 - User InterfaceNoveo
 

Andere mochten auch (20)

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

Ähnlich wie Android - 06 - Gradle

Apache maven in java projects
Apache maven in java projectsApache maven in java projects
Apache maven in java projectsAsya Dudnik
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
NPM и модульная архитектура приложения
NPM и модульная архитектура приложенияNPM и модульная архитектура приложения
NPM и модульная архитектура приложенияDenis Latushkin
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle IntroductionKirill Rozov
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nixAlexander Gerasiov
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на RailsAndrei Kaleshka
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"oelifantiev
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
Tizen for Wearable Development Gear2 Danilov
Tizen for Wearable Development Gear2 DanilovTizen for Wearable Development Gear2 Danilov
Tizen for Wearable Development Gear2 DanilovKirill Danilov
 
Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Yuriy Ryashko
 
Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Yuriy Ryashko
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakAmasty
 
Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"Oleksandr Tolstykh "Quality. Android quality"
Oleksandr Tolstykh "Quality. Android quality"IT Event
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)7bits
 

Ähnlich wie Android - 06 - Gradle (20)

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

Mehr von Noveo

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

Mehr von Noveo (20)

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