Auf Augenhöhe mit Android Studio und Gradle

635 views
489 views

Published on

Mit Android Studio und dem neuen Gradle-Build-System stehen der Community große Veränderungen ins Haus. Neben der Euphorie gibt es allerdings auch Skepsis: Was wird aus den bestehenden Tools? Wie stabil und bugfrei sind die "neuen" schon? Und halten sie auch was sie versprechen? Wir zeigen an praktischen Beispielen die Vorteile und Tücken der neuen Tools im täglichen Entwickeln und im CI-Server Einsatz.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
635
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Auf Augenhöhe mit Android Studio und Gradle

  1. 1. Dominik Helleberg | inovex GmbH Auf Augenhöhe mit Android Studio und Gradle
  2. 2. Dominik Helleberg Mobile Development Android / Embedded Tools http://dominik-helleberg.de/+
  3. 3. Android Studio! ! ! Gradle +! Android Plugin! or! „The new build system“ The new Dream Team!
  4. 4. new?! Oktober ! 2012 Mai! 2013 https://plus.google.com/u/0/+XavierDucrohet/posts/XnW7t9XJCMJ!
  5. 5. ready?! Version! 0.9.+ Version! 0.5.1
  6. 6. Android PlugIn Android Designer Android PlugIn Android DDMS Android Builder .properties build.xml
  7. 7. Android PlugIn Android Designer Android PlugIn Android Gradle Adapter .properties build.gradle
  8. 8. 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.” ! ! !
  9. 9. „hello groovy & gradle“! ! Code!
  10. 10. distcompile compileTest test 3 Phasen:! Initialization! Configuration! Execution! !
  11. 11. 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'])! }!
  12. 12. 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'])! }!
  13. 13. Demo PlugIn! Build targets! Variants! ! Code! Android PlugIn 0.9.+!
  14. 14. 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.+!
  15. 15. Automatische Versions-Verwaltung! Schritt 1:! ! Build-Informationen in App anzeigen ! ! " "Build-Time! " "Build-Host! "! über BuildConfig! Android PlugIn 0.9.+!
  16. 16. Automatische Versions-Verwaltung! Schritt 2:! ! Konfiguration von ! ! " "Version Code! " "Version Name! "! über eine Property-Datei! Android PlugIn 0.9.+!
  17. 17. Automatische Versions-Verwaltung! Schritt 3:! ! Berechnung von versionCode und versionName! ! "version=2.1.3! ! "versionCode=2130! "VersionName=2.1.3! Android PlugIn 0.9.+!
  18. 18. Automatische Versions-Verwaltung! Schritt 4:! ! Versionsnummer aus git Tag auslesen! ! " "git-Tag „2.1.3“! ! Android PlugIn 0.9.+!
  19. 19. Automatische Versions-Verwaltung! Schritt 5:! ! Versionsnummer + App Name dem APK hinzufügen! ! <name>-<sub-name>-<buildType>-<version>.apk! Android PlugIn 0.9.+!
  20. 20. 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.+!
  21. 21. Key Features! Build Variants! BuildTypes!ProductFlavour! debug! UAT! release! int! ext! Builds! int-debug! ext-debug! int-UAT! ext-UAT! int-release! ext-release!
  22. 22. Key Features! Build Variants! Demo Android Studio!
  23. 23. Key Features! The „old“ World!
  24. 24. Key Features! Build Variants Directory structure!     src/    int/      java/      res/    ext/      java/      res/    main/      java/      res/      androidTest/                java/  
  25. 25. Key Features! •  Layout Editor! •  IntelliJ Features! •  Improved Checks! •  Improved UI! ! ! !
  26. 26. 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
  27. 27. Empfehlung! •  „I‘m feeling lucky“! •  Multiproject-Builds! •  Safe side: stay with eclipse (but maybe use gradle)! •  Gradle will be mandatory / Android Studio is optional! ! !
  28. 28. Tipps + Tricks! http://www.manning.com/muschko/
  29. 29. Tipps + Tricks! Gradle daemon $>  cat  .gradle/gradle.properties        org.gradle.daemon=true     Show dependencies $>  gradle  dependencies    
  30. 30. 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/"                          }                  }          }   }  
  31. 31. $>  gradle  assembleDebug  -­‐-­‐profile  
  32. 32. DANKE!

×