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

Advance Android

Advance Android

Blaž Šolar

February 03, 2015
Tweet

More Decks by Blaž Šolar

Other Decks in Programming

Transcript

  1. MVP • Moved from MVC to MVP • Decouples business

    logic from UI • Simplifies testing
  2. Networking • OkHttp HTTP client • HTTP / 2 &

    SPDY • Drop in replacement for HttpUrlConnection and Apache HttpClient • Retrofit in combination with RxJava
  3. Travis CI • Runs on every push and PR •

    Only one Android version at the moment • Unit & functional test + static code annualises + stress tests • Reports uploaded on Amazon S3 bucket
  4. Android Check Plugin • Gradle testing plugin for Android •

    Static code analasies (PMD, Checkstyle, Findbugs, Lint) • Unit and functional tests • Deploy to Amazon S3, Crashlytics Beta & Google Play store • Notifications on HipChat • Push to Git remote
  5. Artifactory • Repository manager (maven repos) • Hosts all internal

    libraries • Project has no sub-projects • Modular and sharable code
  6. Release Build Type • Minimisation, Obfuscation & Optimisation • Production

    API endpoint • Logging levels • Analytics & crash reporting
  7. Debug Build Type • Only for development • Adds additional

    functionalities • No obfuscation, minimisation & optimisation • Strict Mode
  8. Mock Build Type • No emulator support from Samsung for

    Android 16 and above • Running on non Samsung devices • Mocks internal Samsung APIs • Customised Samsung SDK jar
  9. Samsung APIs public final class DevicePolicyManager {
 
 public final

    boolean isAdminActive(ComponentName who) {
 throw new RuntimeException("Stub!");
 }
 
 }
  10. Dev Flavor • In Progress • For all Build Types

    • Only Android Lollipop • Faster build and deploy process
  11. Debug drawer • Thin layer between System and App •

    Not included in production builds • Basic build and device information
  12. Mock location • Mock location provider for whole system •

    Only on development devices • KML support still missing
  13. Animations • In progress • Change animation duration on the

    fly • Disable animations completely 29
  14. Monkey friendly boolean provideIsMonkey() {
 return ActivityManager.isUserAMonkey();
 } • Adjusted

    behaviour for monkeys • Using mock api endpoint • Less UI validations • No debug drawer
  15. Dependency Locking • CI handles library updates • No dynamic

    library versions • Limited to minor version updates • Limitations with Circle CI
  16. Dagger 2 • Developed by Google • Uses annotation processing

    • No reflection • Experimental support in Wandera
  17. Jack & Jill • New Android tool chain • No

    annotation processing support (yet) • Built in proguard support • Faster builds
  18. Buck • Gradle Alternative • Opensource, developed by Facebook •

    Faster than Gradle (for now) • Missing some features
  19. Circle CI • Travis CI alternative • Beta support for

    Android and iOS • Supported by Android Check Plugin • Pros and cons compared to Cricle CI