Top Banner
Dominik Helleberg | inovex GmbH Auf Augenhöhe mit Android Studio und Gradle
35

Android Studio und gradle

May 12, 2015

Download

Technology

Android Studio und gradle Status Quo
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: Android Studio und gradle

Dominik Helleberg | inovex GmbH

Auf Augenhöhe mit Android Studio und Gradle

Page 2: Android Studio und gradle

Dominik Helleberg

Mobile Development

Android / Embedded

Tools

http://dominik-helleberg.de/+

Page 3: Android Studio und gradle

Android Studio !!!

Gradle + !Android Plugin!

or !„The new build system“

The new Dream Team !

Page 4: Android Studio und gradle

new? !Oktober !2012

Mai !2013

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

Page 5: Android Studio und gradle

ready? !Version !0.9.+

Version !0.5.1

Page 6: Android Studio und gradle

Android PlugIn

Android Designer

Android PlugIn

Android DDMS

Android Builder .properties

build.xml

Page 7: Android Studio und gradle

Android PlugIn

Android Designer

Android PlugIn

Android Gradle Adapter .properties

build.gradle

Page 8: Android Studio und gradle
Page 9: 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: Android Studio und gradle

„hello groovy & gradle“ !!

Code !

Page 11: Android Studio und gradle

dist compile

compileTest test

3 Phasen: !Initialization!Configuration!Execution!

!

Page 12: Android Studio und gradle
Page 13: 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: 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: Android Studio und gradle

Demo PlugIn!

Build targets!Variants!

!Code !

Android PlugIn 0.9.+ !

Page 16: 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: 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: 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: 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: 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: 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: 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: Android Studio und gradle
Page 24: 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: Android Studio und gradle

Key Features !Build Variants!

Demo Android Studio !

Page 26: Android Studio und gradle

Key Features !The „old“ World !

Page 27: Android Studio und gradle

Key Features !Build Variants Directory structure!  

 src/  

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

   androidTest/                java/      

Page 28: Android Studio und gradle

Key Features !

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

Page 29: 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: 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: Android Studio und gradle

Tipps + Tricks !

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

Page 32: Android Studio und gradle

Tipps + Tricks !Gradle daemon

$>  cat  .gradle/gradle.properties  

     org.gradle.daemon=true  

 

Show dependencies

$>  gradle  dependencies  

 

Page 33: 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: Android Studio und gradle

$>  gradle  assembleDebug  -­‐-­‐profile  

Page 35: Android Studio und gradle

DANKE!