Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automate the Mobile

Automate the Mobile

If you are starting serious with Mobile development for multiple platforms you need to have a plan! Let’s discuss what components you can set up in your Mobile DevOps landscape, how an application would travel from each state to another, and what do you need to do to setup it. In the talk we will talk about CI, automation testing, provisioning, automatic AppStore deployments, device labs and more.

Alexey Buzdin

July 16, 2016
Tweet

More Decks by Alexey Buzdin

Other Decks in Programming

Transcript

  1. Next 40 minutes of your time 1. Landscape Overview 2.

    Building Stuff 3. Extra Spicy Recipes
  2. 1. Landscape Overview And here is where the first problem

    appears… First-thing-first: We need a PC!
  3. ->>

  4. allprojects { repositories { maven { url "https: //jitpack.io" }

    } } dependencies { compile 'com.github.User:Repo:Tag' }
  5. - Upload screenshots, metadata, apps to the App Store -

    Automate screenshots provisioning on different devices - Quickly put your screenshots into the right device frames - Automatically generate push notification profiles - Automatically maintain iOS code signing certificates https: //github.com/fastlane/fastlane
  6. Developer must be able to build an app from scratch

    on an empty environment with a single console command Big Good Rule of Goodness 1.
  7. Big Good Rule of Goodness 1. ctcoMobile { 2. platform

    = 'xcode' 3. xcode { 4. // Configuration for all environments 5. automaticConfiguration = false 6. sdk = 'iphoneos' 7. configuration = 'Release' 8. } 9. } build - Runs builds for all project's target environments buildIos - Runs builds for all project's Ios target environments restoreDependencies - Restores project's dependencies
  8. 1. ctcoMobile { 2. platform = 'xamarin' 3. xamarin {

    4. solutionFile = file(‘App.sln’) 5. projectFile = file(‘App.iOS/App.iOS.csproj') 6. projectName = ‘App.iOS' 7. assemblyName = 'AppiOS' 8. } 9. xandroid { 10. solutionFile = file('App.sln') 11. projectFile = file('App.Android/App.Android.csproj') 12. projectName = 'App.Android' 13. assemblyName = 'AppAndroid' 14. } 15. }
  9. Problems with managing android build tool version on CI? 1.

    # Experimental flag, new in 2.2.0-alpha 2. android.builder.sdkDownload=true
  10. https: //github.com/Genymobile/genymotion-gradle-plugin 1. genymotion { 2. devices { 3. nexus5

    { 4. template "Google Nexus 5 - 4.4.4 - API 19 - 1080x1920" 5. } 6. } 7. }
  11. Tired of creating separate Retina/non Retina Images and Android -dpi?

    https: //github.com/redwarp/9-Patch-Resizer
  12. https: //github.com/coobird/thumbnailator 1. Thumbnails.of(new File("original.jpg")) 2. .size(160, 160) 3. .rotate(90)

    4. .watermark(Positions.BOTTOM_RIGHT, 5. ImageIO.read(new File("wtrmrk.png")), 0.5f) 6. .outputQuality(0.8) 7. .toFile(new File("image-with-watermark.jpg"));