Your SlideShare is downloading. ×
Gradle presentation
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Gradle presentation

890
views

Published on

Small introduction to gradle for android

Small introduction to gradle for android

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
890
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Gradle not just an ANT replacement
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. Basic gradle config buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.0+' } } apply plugin: 'android' android { compileSdkVersion 19 }
  • 6. Adding libs dependencies { // 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”) }
  • 7. Basic gradle commands $ gradle tasks $ gradle tasks --all $ gradle assembleDebug $ gradle assembleRelease $ gradle clean $ gradle installDebug $ gradle uninstallAll
  • 8. Gradle build customization android { compileSdkVersion 19 defaultConfig { versionCode 1 versionName "1.0" minSdkVersion 16 targetSdkVersion 16 } }
  • 9. Build Types buildTypes { debug { packageNameSuffix ".debug" } release { runProguard true proguardFile getDefaultProguardFile('proguard-androidoptimize.txt') } } $ gradle installFreeDebug
  • 10. Build Variants productFlavors { 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 } }
  • 11. Build Variants specific files & deps 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.
  • 12. BuildConfig import 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()}"; """ }
  • 13. Android Studio Integration
  • 14. 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
  • 15. Oriol Jiménez @oriolj oriolj@gmail.com

×