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

Android in Practice (long)

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →
AppFoundry
February 16, 2018

Android in Practice (long)

Presented by Siebe Sysmans

AppFoundry

February 16, 2018

Transcript

80 slides
  1. • Maandag t.e.m. vrijdag → Project stand-up • Waar is

    iedereen mee bezig • Problemen bovenhalen op geplande tickets • Zijn er onverwachte blokkerende tickets? • Is er iemand idle en kan ergens helpen? • Op vrijdag via Hangouts
  2. Build variants • buildType en productFlavors • Bijvoorbeeld: • buildType

    → debug, productie, … • productFlavor → environment
  3. Package Structure • Top-level package indelen in grote logische blokken

    (database, service, ui, …) • 2 voornamelijke manieren voor verdere indeling • Per type class • Per Feature • Soms ook: per feature en type
  4. Butter knife • Geen findViewById(…) meer. • Bind views, resources,

    onClick, … • Genereert code tijdens de build
  5. Picasso / Glide • Gemakkelijk afbeelding laden • Afbeeldingen cachen

    • Afbeeldingen transformeren • Placeholder en error ondersteuning
  6. OkHttp • Vervanging van Apache HTTP client • Verbetering in

    stabiliteit • Verbetering in compressie • Silent recovery • Synchroon blokkerend • Asynchroon met callbacks
  7. Retrofit • Genereert netwerkcode aan de hand van een simpel

    te schrijven Interface tijden build • Converters voor Gson en Jackson (json), SimpleXML, …, roll-your-own. • Synchroon blokkerend • Asynchroon met callbacks
  8. Database Libraries • Wat we willen → ORM • Veel

    libraries beschikbaar • ORMLite • GreenDao • DBFlow • SugerORM • (Realm) • …
  9. Database Libraries • Wat we willen → ORM • Veel

    libraries beschikbaar • ORMLite • GreenDao • DBFlow • SugerORM • (Realm) • …
  10. DBFlow • Elimineert boilerplate • Genereert code tijdens build •

    Eenvoudige API voor Insert, Select, … • Migratie oplossing • SQLite • Eenvoudig in combinatie met Retrofit
  11. Peer review • Andere developer kijkt naar de code •

    Kijkt of de huisstijl gerespecteerd is • Weet ook wat er in de code zit
  12. (Beta) Release • Build maken met release keystore • Goed

    bewaren → anders nooit meer updaten • Beta release naar Google+ Community • Beide op de Google Developer Console • Paar uur later beschikbaar • Kan ook gefaseerd (5%, 10%, …)
  13. Release Opvolging • Crashes en exception logs opvolgen • Play

    Store • Crashlytics • Apteligent (vroeger Crittercism) • Customer care • Analytics data bekijken
  14. MVP

  15. MVP Voordelen • Simpeler testen • Mock View en Presenter

    • Gemakkelijk te onderhouden • Gemakkelijk View en Presenter switchen • A/B test • Nieuwe UI iteratie • …
  16. RXJava • Functional Reactive Programming • Zeer gemakkelijke async •

    Ideaal voor • Service calls • Database read/write • UI events • Langdurige taken • …
  17. Kotlin • JVM programming language • JetBrains • Verbeteringen tegenover

    Java • Extension functions • Single expression functions • Range expressions • String templates • Null-safety • Data classes • …
  18. Kotlin Syntax class User(val name: String, val age: Int) {

    fun canVote(): Boolean { return age >= 18 } } val siebe = User(Siebe, 26) siebe.canVote()
  19. Kotlin - String Templates val i = 10 val s

    = “i = $i” val s = "abc" val str = "$s.length is ${s.length}” // evaluates to "abc.length is 3"
  20. Kotlin - Data Classes data class User(val name: String =

    "", val age: Int = 0) • Genereert: • equals() • hashCode() • toString() —> "User(name=John, age=42)” • copy() • getters en setters
  21. Kotlin - Null Safety var text: String = "abc" text

    = null // compilation error val length = text.length
  22. Kotlin - Null Safety var text: String? = "abc" text

    = null // ok val length = text.length // error: variable ‘text' can be null val length = text?.length // typeOf(length) -> Int?

More Decks by AppFoundry

Other Decks in Technology