Top Banner
Gradle not just an ANT replacement
15

Gradle presentation

Jan 26, 2015

Download

Technology

Oriol Jiménez

Small introduction to gradle for android
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Gradle presentation

Gradle not just an ANT replacement

Page 2: Gradle presentation

Goals of Gradle (from official docs)● Make it easy reuse code and resources (.aar)● Make it easy to create several variants of an application● Make it easy to configure, extend and customize the

build process● Good IDE integration

Page 3: Gradle presentation

About Gradle

● Is based on groovy:○ binary-compatible with java○ Most java code is syntactically valid on Groovy○ The gradle installation comes with groovy

● You better use a gradle wrapper for your android projects

Page 4: Gradle presentation

Android Studio

● If something goes wrong, use gradle on the command line

● use this button: ● One update can “break” your project● If something goes wrong, use gradle on the command

line

Page 5: Gradle presentation

Basic gradle configbuildscript {

repositories {

mavenCentral()

} dependencies {

classpath 'com.android.tools.build:gradle:0.6.0+'

}

}

apply plugin: 'android'

android {

compileSdkVersion 19

}

Page 6: Gradle presentation

Adding libsdependencies {

// MavenCentral deps

compile 'com.android.support:support-v4:19.0.0'

compile 'com.android.support:appcompat-v7:19.0.0'

compile 'com.squareup.retrofit:retrofit:1.2.2'

compile 'com.squareup.okhttp:okhttp:1.2.1'

// project dep:

compile project(“:libraries:lib1”)

// jar dep:

compile files(‘libs/a.jar”, “libs/b.jar”)

compile fileTree(dir: “libs”, include: “*.jar”)

}

Page 7: Gradle presentation

Basic gradle commands$ gradle tasks

$ gradle tasks --all

$ gradle assembleDebug

$ gradle assembleRelease

$ gradle clean

$ gradle installDebug

$ gradle uninstallAll

Page 8: Gradle presentation

Gradle build customizationandroid {

compileSdkVersion 19

defaultConfig {

versionCode 1

versionName "1.0"

minSdkVersion 16

targetSdkVersion 16

}

}

Page 9: Gradle presentation

Build TypesbuildTypes {

debug {

packageNameSuffix ".debug"

}

release {

runProguard true

proguardFile getDefaultProguardFile('proguard-android-

optimize.txt')

}

}

$ gradle installFreeDebug

Page 10: Gradle presentation

Build VariantsproductFlavors {

free {

packageName "com.bitcoinlab.android.free"

buildConfig “public static final boolean FULL_VERSION =

false;”

}

full {

packageName "com.bitcoinlab.android.full"

versionName "2.0"

versionCode 20

buildConfig “public static final boolean FULL_VERSION =

true;”

signingConfig signingConfigs.myConfig

}

}

$ gradle installFullDebug

Page 11: Gradle presentation

src/full/java/src/”packagename”/file.java

src/full/res/values/strings.xml

src/full/AndroidManifest.xml

dependencies {

fullCompile ‘com.squareup.okhttp:okhttp:1.2.1'

}

A source file can’t exists on main src folder and at

the same time on a flavour src folder: put a class into

main, or in every buildType but not both.

Build Variants specific files & deps

Page 12: Gradle presentation

BuildConfigimport java.text.SimpleDateFormat

def buildTime() {

def df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'")

df.setTimeZone(TimeZone.getTimeZone("UTC"))

return df.format(new Date())

}

defaultConfig {

buildConfig """\

public static final String GIT_SHA = "${gitSha()}";

public static final String BUILD_TIME = "${buildTime()}";

"""

}

Page 13: Gradle presentation

Android Studio Integration

Page 14: Gradle presentation

Some things you can do with gradle● free/paid apk

● debug/release version

● beta/alpha/”any git branch” apk

● Use multiple flavors + multiple-apk play store support to distribute

smaller apks (depending on screen size or android version)

● build your customized integration and test server in minutes

Page 15: Gradle presentation

Oriol Jiménez

@oriolj

[email protected]