a brief guide to android gradle

24
A brief guide to Android Gradle GDG Korea Android

Upload: leonardo-kim

Post on 27-Aug-2014

386 views

Category:

Software


7 download

DESCRIPTION

 

TRANSCRIPT

Page 1: A brief guide to android gradle

A brief guide to Android Gradle

GDG Korea Android

Page 2: A brief guide to android gradle

Gradle?Gradle combines the power and flexibility of Ant with the dependency management and conventions of Maven into a more effective way to build.

Page 3: A brief guide to android gradle

Build Tool● Configuration (Static) + Build (Dynamic)● Ant

o Focus on Buildo hard to configure

● Maveno Focus on Configurationo hard to costumize

● Alt.o Gradle - Groovy language (Dynamic), DSL (Static)o Apache Ivy

Page 4: A brief guide to android gradle

Groovy● Runs on Java VM● The principle of least surprise (JAVA)● Built-in List, Range, Map, Closure● Improved Loops, Switches● Built-in Regex, Improved Strings● Supports Dynamic typing and Static typing.

Page 5: A brief guide to android gradle

Groovyclass Greet { def name Greet(who) { name = who[0].toUpperCase() + who[1..-1] } def salute() { println "Hello $name!" }}

g = new Greet('world')g.salute()

Page 6: A brief guide to android gradle

Task: Hello World

task hello { doLast { println 'Hello world!' }}

Page 7: A brief guide to android gradle

gradle -q helloHello world!

Page 8: A brief guide to android gradle

Short version

task hello << { println 'Hello world!'}

Page 9: A brief guide to android gradle

Other task example

task upper << { String someString = 'mY_nAmE' println "Original: " + someString println "Upper case: " +

someString.toUpperCase()}

Page 10: A brief guide to android gradle

Loop example

task count << { 4.times { print "$it " }}

Page 11: A brief guide to android gradle

Dependencies

task hello << { println 'Hello world!'}task intro(dependsOn: hello) << { println "I'm Gradle"}

Page 12: A brief guide to android gradle

Dynamic tasks4.times { counter -> task "task$counter" << { println "I'm task number $counter" }}

> gradle -q task1I'm task number 1

Page 13: A brief guide to android gradle

Manipulating existing tasks4.times { counter -> task "task$counter" << { println "I'm task number $counter" }}task0.dependsOn task2, task3> gradle -q task0I'm task number 2I'm task number 3I'm task number 0

Page 14: A brief guide to android gradle

Default TasksdefaultTasks 'clean', 'run'

task clean << { println 'Default Cleaning!'}

task run << { println 'Default Running!'}

task other << { println "I'm not a default task!"}

Page 15: A brief guide to android gradle

Java Plugin

apply plugin: 'java'gradle build:compileJava:processResources:classes:jar:assemble:compileTestJava:processTestResources:testClasses:test:check:build

Page 16: A brief guide to android gradle

Adding repositories

repositories { mavenCentral()}

Page 17: A brief guide to android gradle

Adding dependenciesdependencies { compile group: 'commons-collections', name:

'commons-collections', version: '3.2' testCompile group: 'junit', name: 'junit', version:

'4.+'}

Page 18: A brief guide to android gradle

Adding source setssourceSets { main { java { srcDir 'src/java' } resources { srcDir 'src/resources' } }}

Page 19: A brief guide to android gradle

More simple way

sourceSets { main.java.srcDirs = ['src/java'] main.resources.srcDirs =

['src/resources']}

Page 20: A brief guide to android gradle

Andorid build.gradle samplebuildscript { repositories { mavenCentral() }

dependencies { classpath 'com.android.tools.build:gradle:0.9.0' }}

apply plugin: 'android'

android { compileSdkVersion 19 buildToolsVersion "19.0.0"}

Page 21: A brief guide to android gradle

Android source setsandroid { sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] }

androidTest.setRoot('tests') }}

Page 22: A brief guide to android gradle

Android version configurationandroid { compileSdkVersion 19 buildToolsVersion "19.0.0"

defaultConfig { versionCode 12 versionName "2.0" minSdkVersion 16 targetSdkVersion 16 }}

Page 23: A brief guide to android gradle

Dynamic versiondef computeVersionName() { ...}

android { compileSdkVersion 19 buildToolsVersion "19.0.0"

defaultConfig { versionCode 12 versionName computeVersionName() minSdkVersion 16 targetSdkVersion 16 }}

Page 24: A brief guide to android gradle

More...

● http://tools.android.com/tech-docs/new-build-system/user-guide

● http://www.vogella.com/tutorials/AndroidBuild/article.html

● http://kwonnam.pe.kr/wiki/gradle