Download - Auf Augenhöhe mit Android Studio und Gradle

Transcript
Page 1: Auf Augenhöhe mit Android Studio und Gradle

Dominik Helleberg | inovex GmbH

Auf Augenhöhe mit Android Studio und Gradle

Page 2: Auf Augenhöhe mit Android Studio und Gradle

Dominik Helleberg

Mobile Development

Android / Embedded

Tools

http://dominik-helleberg.de/+

Page 3: Auf Augenhöhe mit Android Studio und Gradle

Android Studio !!!

Gradle + !Android Plugin!

or !„The new build system“

The new Dream Team !

Page 4: Auf Augenhöhe mit Android Studio und Gradle

new? !Oktober !2012

Mai !2013

https://plus.google.com/u/0/+XavierDucrohet/posts/XnW7t9XJCMJ !

Page 5: Auf Augenhöhe mit Android Studio und Gradle

ready? !Version !0.9.+

Version !0.5.1

Page 6: Auf Augenhöhe mit Android Studio und Gradle

Android PlugIn

Android Designer

Android PlugIn

Android DDMS

Android Builder .properties

build.xml

Page 7: Auf Augenhöhe mit Android Studio und Gradle

Android PlugIn

Android Designer

Android PlugIn

Android Gradle Adapter .properties

build.gradle

Page 8: Auf Augenhöhe mit Android Studio und Gradle
Page 9: Auf Augenhöhe mit Android Studio und Gradle

Best of ANT / Maven / GANT / Ivy !Based on Groovy Scripts !Expressive DSL !(Flexible) Convention over Configuration!Easy to extend!!„Make the impossible possible, make the possible easy and make the easy elegant.” !!!!

Page 10: Auf Augenhöhe mit Android Studio und Gradle

„hello groovy & gradle“ !!

Code !

Page 11: Auf Augenhöhe mit Android Studio und Gradle

dist compile

compileTest test

3 Phasen: !Initialization!Configuration!Execution!

!

Page 12: Auf Augenhöhe mit Android Studio und Gradle
Page 13: Auf Augenhöhe mit Android Studio und Gradle

apply plugin: 'android' !!android { ! compileSdkVersion 19 ! buildToolsVersion "19.0.2" !! defaultConfig { ! minSdkVersion 7 ! targetSdkVersion 19 ! versionCode 1 ! versionName "1.0" ! } ! buildTypes { ! release { ! runProguard false! proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' ! } ! } !} !!dependencies { ! compile 'com.android.support:appcompat-v7:+' ! compile fileTree(dir: 'libs', include: ['*.jar', '*.aar']) !} !!!!!

Page 14: Auf Augenhöhe mit Android Studio und Gradle

Android PlugIn 0.9.+ !

Core Features !!•  Konfigurierbare Manifest Attribute !•  Build Varianten !•  Tests integriert !•  BuildConfig konfigurierbar !•  Signierung konfigurierbar !•  Tools versioniert!•  Multiproject-Support !•  Dependency Management !•  Binary Lib Format (AAR) !•  Lint integration!•  Dex + AAPT Options !

apply plugin: 'android' !!android { ! compileSdkVersion 19 ! buildToolsVersion "19.0.2" !! defaultConfig { ! minSdkVersion 7 ! targetSdkVersion 19 ! versionCode 1 ! versionName "1.0" ! } ! buildTypes { ! release { ! runProguard false! proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' ! } ! } !} !!dependencies { ! compile 'com.android.support:appcompat-v7:+' ! compile fileTree(dir: 'libs', include: ['*.jar', '*.aar']) !} !!!!!

Page 15: Auf Augenhöhe mit Android Studio und Gradle

Demo PlugIn!

Build targets!Variants!

!Code !

Android PlugIn 0.9.+ !

Page 16: Auf Augenhöhe mit Android Studio und Gradle

Extension: !Automatische Versions-Verwaltung !

Ziel: !"Version Code !"Version Name !"- einfach konfigurierbar halten !"- aus git-tags extrahieren und in gradle setzen !"!"Build-Informationen in der App verfügbar machen !

!!

Android PlugIn 0.9.+ !

Page 17: Auf Augenhöhe mit Android Studio und Gradle

Automatische Versions-Verwaltung !

Schritt 1: !!Build-Informationen in App anzeigen !!

" "Build-Time !" "Build-Host !"!

über BuildConfig!

Android PlugIn 0.9.+ !

Page 18: Auf Augenhöhe mit Android Studio und Gradle

Automatische Versions-Verwaltung !

Schritt 2: !!Konfiguration von !!

" "Version Code !" "Version Name !"!

über eine Property-Datei !

Android PlugIn 0.9.+ !

Page 19: Auf Augenhöhe mit Android Studio und Gradle

Automatische Versions-Verwaltung !

Schritt 3: !!Berechnung von versionCode und versionName!!

"version=2.1.3 !!

"versionCode=2130 !"VersionName=2.1.3 !

Android PlugIn 0.9.+ !

Page 20: Auf Augenhöhe mit Android Studio und Gradle

Automatische Versions-Verwaltung !

Schritt 4: !!Versionsnummer aus git Tag auslesen !!

" "git-Tag „2.1.3“ !!

Android PlugIn 0.9.+ !

Page 21: Auf Augenhöhe mit Android Studio und Gradle

Automatische Versions-Verwaltung !

Schritt 5: !!Versionsnummer + App Name dem APK hinzufügen !!<name>-<sub-name>-<buildType>-<version>.apk!

Android PlugIn 0.9.+ !

Page 22: Auf Augenhöhe mit Android Studio und Gradle

Automatische Versions-Verwaltung !

Modularisieren: !!inside build-scripts!!buildSrc/ !!external build-scripts (local file or http) !apply from:'https://raw.github.com/../all-jars.gradle‘ !apply from:'~/.gradle/RobertFischer/gradle-scripts/all-jars.gradle‘ !!via dependencies / Repository !

Android PlugIn 0.9.+ !

Page 23: Auf Augenhöhe mit Android Studio und Gradle
Page 24: Auf Augenhöhe mit Android Studio und Gradle

Key Features !Build Variants!

BuildTypes!ProductFlavour!

debug!

UAT !

release!

int!

ext !

Builds!int-debug!ext-debug!

int-UAT !ext-UAT !

int-release !ext-release !

Page 25: Auf Augenhöhe mit Android Studio und Gradle

Key Features !Build Variants!

Demo Android Studio !

Page 26: Auf Augenhöhe mit Android Studio und Gradle

Key Features !The „old“ World !

Page 27: Auf Augenhöhe mit Android Studio und Gradle

Key Features !Build Variants Directory structure!  

 src/  

 int/      java/      res/    ext/      java/      res/    main/      java/      res/  

   androidTest/                java/      

Page 28: Auf Augenhöhe mit Android Studio und Gradle

Key Features !

•  Layout Editor !•  IntelliJ Features !•  Improved Checks !•  Improved UI !!!!

Page 29: Auf Augenhöhe mit Android Studio und Gradle

Status Quo !

•  Mostly stable but expect breaking changes!

•  Documentation poor!

•  Many examples might not work (old versions) !

•  Features are worth considering it

•  Mostly stable!

•  Unpredictable updates!

•  Tools & Features missing!

•  IntelliJ EAP Release

Page 30: Auf Augenhöhe mit Android Studio und Gradle

Empfehlung !

•  „I‘m feeling lucky“ !

•  Multiproject-Builds!

•  Safe side: stay with eclipse (but maybe use gradle) !

•  Gradle will be mandatory / Android Studio is optional !

!!

Page 31: Auf Augenhöhe mit Android Studio und Gradle

Tipps + Tricks !

http://www.manning.com/muschko/

Page 32: Auf Augenhöhe mit Android Studio und Gradle

Tipps + Tricks !Gradle daemon

$>  cat  .gradle/gradle.properties  

     org.gradle.daemon=true  

 

Show dependencies

$>  gradle  dependencies  

 

Page 33: Auf Augenhöhe mit Android Studio und Gradle

Tipps + Tricks !Gradle Init Scripts $>  cat  .gradle/init.gradle  initscript  {          allprojects  {  

               apply  plugin:  'maven’                  repositories  {                          maven  {                                  url  =  "http://archiva.inovex.de:8080/archiva/repository/snapshots/"                          }                  }          }  }  

Page 34: Auf Augenhöhe mit Android Studio und Gradle

$>  gradle  assembleDebug  -­‐-­‐profile  

Page 35: Auf Augenhöhe mit Android Studio und Gradle

DANKE!