Tips and tricks for a
successful Android
application
- Jorge Coca -
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
...first things first
Slide 4
Slide 4 text
Jorge,
who do you think you
are!?
Slide 5
Slide 5 text
→ Released over 20 apps
→ Mostly Android, but some iOS too
→ Half of them have been a disaster!!
→ ... and the other half are doing pretty good :)
→ Worked alone, small teams... and large and
internationals teams
Slide 6
Slide 6 text
Those who do not learn
history are doomed to
repeat it
— George Santayana
Slide 7
Slide 7 text
Android was initially
designed to be a camera
operating system
Slide 8
Slide 8 text
Cupcake &
Donut
April 2009
→ First major release
→ Linux kernel
→ Java & Eclipse ADT
→ Main widgets and SDK
components
→ Voice entry support
→ Gesture framework
Slide 9
Slide 9 text
Eclair
October 2009
→ Multi account support
→ Bluetooth
→ Multitouch
→ Camera supports flash
⚡
Slide 10
Slide 10 text
Froyo
May 2010
→ Chrome
→ Push notifications via C2DM
→ Flash and GIFs
→ Improved Market
Slide 11
Slide 11 text
Gingerbread
December 2010
→ NFC
→ Improvementes on UI
→ Support for front camera
→ Google Wallet (on Nexus S)
→ Nexus One
Slide 12
Slide 12 text
Honeycomb
February 2011
→ Optimized for tablet support
→ Holo interface
→ Welcome Fragments!
Slide 13
Slide 13 text
Ice Cream
Sandwich
October 2011
→ Holo for phones
→ Major update of the OS
→ Editor's choice
→ Android is here to stay
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
Jelly Bean
June 2012
→ Focus on performance
→ Support library &
→ New bluetooth stack
→ Dev focus on quality
→ Jake Wharton's first conference
Slide 16
Slide 16 text
KitKat
October 2013
→ Refreshed interfaced
→ Android Wear
→ Nexus 5 and wearables
→ Android Studio
→ Gradle
Slide 17
Slide 17 text
Lollipop
November 2014
→ Material Design
→ Dalvik
→ Multiple SIM card
→ WebView distributed over
PlayStore
→ Dev focus on performance
#perfMatters
→ Android One
Slide 18
Slide 18 text
Marhsmallow
October 2015
→ Android for Work
→ Doze
→ Fingerprint
→ Runtime permissions
→ Battery optimizations
Slide 19
Slide 19 text
Nougat
August 2016
→ Android beta program
→ Daydream
→ Multiwindow support
→ Picture in picture
Slide 20
Slide 20 text
Oreo
August 2017
→ Kotlin
→ Architecture components
→ Focus on modular architectures
→ Adaptive icons
→ Notification improvements
→ Google Play protect
→ Android Go
Slide 21
Slide 21 text
Challenges
→ Have clear goals and expectations
→ Invest your time and energy where it matters
→ Build for everyone
→ Crowded market. Be original
→ Be the first... or be the best
Slide 22
Slide 22 text
Goals and expectations
→ Research your market
→ Measurable goals
→ Realistic expectations
→ Indie vs. small shop vs. corporation
→ Functionality vs design... (or both)
Slide 23
Slide 23 text
Invest your time and energy where it
matters
Slide 24
Slide 24 text
Time and energy
→ Your cloud is your first common layer. Use it!
→ Dedicate efforts to the main use case of your app
→ What can you share between iOS and Android?
Slide 25
Slide 25 text
Time and energy: cross platform
→ Easiest: WebView
→ WebView with native bridge: custom, Ionic...
→ Xamarin
→ Kotlin Multiplatform
→ ReactNative
→ Flutter
Slide 26
Slide 26 text
Time and energy
Android native
Slide 27
Slide 27 text
Stop using
Eclipse
Slide 28
Slide 28 text
... and Java!
Slide 29
Slide 29 text
Kotlin
→ Better develop experience
→ Interop with existing Java
→ Null safety
→ Google working on Kotlifying APIs
→ Easier to do "more complex" things
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
Kotlin
Do not force unwrap
val jorge: Person? = null
jorge!!.canSing
CRASH!
... also, I sing horribly
Slide 32
Slide 32 text
Kotlin
Hello default paramenters!
Bye Factories!
class Person(
val name: String,
val age: Int,
val canBreath: Boolean = true,
val canSing: Boolean = true)
... unless you are like me
Slide 33
Slide 33 text
Kotlin
Sealed classes to express more complex enums
sealed class Vehicle
data class Car(val brand: String): Vehicle()
data class Bike(val isMountainBike: Boolean): Vehicle()
object class MagicCarpet : Vehicle()
Slide 34
Slide 34 text
Kotlin: other tips
→ Data classes are your friends
→ Easy singletons with object
→ Synthetic extensions to avoid boilerplate
Slide 35
Slide 35 text
Android
→ The smaller your Activities are, the better
→ The smaller your Fragments are, the better
→ The smaller your Services, the better
Remove your business logic from SDK components
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
Android
→ MVP, MVVM, VIPER, RIBs...
→ Only use libraries that make you feel comfortable
→ Do not overuse libraries
→ The smaller your APK is, the better! -> Code for
everyone