Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Tips and tricks for a successful Android applic...
Search
Jorge Coca
August 06, 2018
Technology
0
72
Tips and tricks for a successful Android application
THAT Conference 2018
Jorge Coca
August 06, 2018
Tweet
Share
More Decks by Jorge Coca
See All by Jorge Coca
Flutter: a journey of productivity and happiness
jorgecoca
1
130
expect(isTestingInFlutterEasy, isTrue);
jorgecoca
1
60
Flutter at scale: 2020 Edition
jorgecoca
5
560
Effective Dart for mobile developers
jorgecoca
8
1.9k
Flutter at scale
jorgecoca
2
1.3k
Our Journey To Flutter
jorgecoca
2
370
Is Flutter truly that easy?
jorgecoca
1
270
let swift == val kotlin -> Why iOS is so important for Android, and vice versa
jorgecoca
1
430
What's behind BMW Connected?
jorgecoca
0
120
Other Decks in Technology
See All in Technology
データモデルYANGの処理系を再発明した話
tjmtrhs
0
180
事業を差別化する技術を生み出す技術
pyama86
2
440
クラウド関連のインシデントケースを収集して見えてきたもの
lhazy
9
1.8k
生成AI×財務経理:PoCで挑むSlack AI Bot開発と現場巻き込みのリアル
pohdccoe
1
780
エンジニア主導の企画立案を可能にする組織とは?
recruitengineers
PRO
1
280
OCI Success Journey OCIの何が評価されてる?疑問に答える事例セミナー(2025年2月実施)
oracle4engineer
PRO
2
180
フォーイット_エンジニア向け会社紹介資料_Forit_Company_Profile.pdf
forit_tech
1
1.7k
Aurora PostgreSQLがCloudWatch Logsに 出力するログの課金を削減してみる #jawsdays2025
non97
1
230
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
8
750
急成長する企業で作った、エンジニアが輝ける制度/ 20250227 Rinto Ikenoue
shift_evolve
0
180
Platform Engineeringで クラウドの「楽しくない」を解消しよう
jacopen
4
120
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
280
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Scaling GitHub
holman
459
140k
It's Worth the Effort
3n
184
28k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Building an army of robots
kneath
303
45k
Optimizing for Happiness
mojombo
377
70k
Side Projects
sachag
452
42k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.3k
Transcript
Tips and tricks for a successful Android application - Jorge
Coca -
None
...first things first
Jorge, who do you think you are!?
→ 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
Those who do not learn history are doomed to repeat
it — George Santayana
Android was initially designed to be a camera operating system
Cupcake & Donut April 2009 → First major release →
Linux kernel → Java & Eclipse ADT → Main widgets and SDK components → Voice entry support → Gesture framework
Eclair October 2009 → Multi account support → Bluetooth →
Multitouch → Camera supports flash ⚡
Froyo May 2010 → Chrome → Push notifications via C2DM
→ Flash and GIFs → Improved Market
Gingerbread December 2010 → NFC → Improvementes on UI →
Support for front camera → Google Wallet (on Nexus S) → Nexus One
Honeycomb February 2011 → Optimized for tablet support → Holo
interface → Welcome Fragments!
Ice Cream Sandwich October 2011 → Holo for phones →
Major update of the OS → Editor's choice → Android is here to stay
None
Jelly Bean June 2012 → Focus on performance → Support
library & → New bluetooth stack → Dev focus on quality → Jake Wharton's first conference
KitKat October 2013 → Refreshed interfaced → Android Wear →
Nexus 5 and wearables → Android Studio → Gradle
Lollipop November 2014 → Material Design → Dalvik → Multiple
SIM card → WebView distributed over PlayStore → Dev focus on performance #perfMatters → Android One
Marhsmallow October 2015 → Android for Work → Doze →
Fingerprint → Runtime permissions → Battery optimizations
Nougat August 2016 → Android beta program → Daydream →
Multiwindow support → Picture in picture
Oreo August 2017 → Kotlin → Architecture components → Focus
on modular architectures → Adaptive icons → Notification improvements → Google Play protect → Android Go
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
Goals and expectations → Research your market → Measurable goals
→ Realistic expectations → Indie vs. small shop vs. corporation → Functionality vs design... (or both)
Invest your time and energy where it matters
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?
Time and energy: cross platform → Easiest: WebView → WebView
with native bridge: custom, Ionic... → Xamarin → Kotlin Multiplatform → ReactNative → Flutter
Time and energy Android native
Stop using Eclipse
... and Java!
Kotlin → Better develop experience → Interop with existing Java
→ Null safety → Google working on Kotlifying APIs → Easier to do "more complex" things
None
Kotlin Do not force unwrap val jorge: Person? = null
jorge!!.canSing CRASH! ... also, I sing horribly
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
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()
Kotlin: other tips → Data classes are your friends →
Easy singletons with object → Synthetic extensions to avoid boilerplate
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
None
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
Never stop learning
None
None
@jcocaramos
None