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
Advance Android
Search
Blaž Šolar
February 03, 2015
Programming
81
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Advance Android
Blaž Šolar
February 03, 2015
More Decks by Blaž Šolar
See All by Blaž Šolar
Secrets from Google I/O
blazsolar
0
62
Reactive Extensions for JVM
blazsolar
0
220
Other Decks in Programming
See All in Programming
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
270
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
140
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.5k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
190
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3.9k
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
500
自作OSでスライド発表する
uyuki234
1
3.9k
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
190
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
280
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
440
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
350
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
Evolving SEO for Evolving Search Engines
ryanjones
0
240
AI: The stuff that nobody shows you
jnunemaker
PRO
8
840
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
380
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
360
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Transcript
Advance Android @ D•Labs
MVP • Moved from MVC to MVP • Decouples business
logic from UI • Simplifies testing
Dependency Injection • Forces better code structure • Simplifies testing
• Dagger (annotation processing)
Wandera Object Graph
Functional Reactive Programming • RxJava • Asynchronous Dataflow Programming •
Building blocks of functional programming • + more
Wandera Authentication Process
Wandera Authentication Process
Networking • OkHttp HTTP client • HTTP / 2 &
SPDY • Drop in replacement for HttpUrlConnection and Apache HttpClient • Retrofit in combination with RxJava
EventBus • Publish subscribe pattern • Decouples code and preserves
ability to communicate
No Fragments • Nobody understands fragments • Using custom views
instead
Tooling
Gradle • Official Android build system • Task dependency graph
• Easily expandable
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
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
Memory Monitor • In development • Tracks app memory consumption
while running • HTML & hprof report
Artifactory • Repository manager (maven repos) • Hosts all internal
libraries • Project has no sub-projects • Modular and sharable code
Command Line Tools • Common app actions • Used for
development
Build Types Production Debug Staging Mock
Release Build Type • Minimisation, Obfuscation & Optimisation • Production
API endpoint • Logging levels • Analytics & crash reporting
Debug Build Type • Only for development • Adds additional
functionalities • No obfuscation, minimisation & optimisation • Strict Mode
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
Samsung APIs public final class DevicePolicyManager { public final
boolean isAdminActive(ComponentName who) { throw new RuntimeException("Stub!"); } }
Samsung APIs public class DevicePolicyManager { public boolean isAdminActive(ComponentName
who) { return false; } }
Dev Flavor • In Progress • For all Build Types
• Only Android Lollipop • Faster build and deploy process
Debug drawer • Thin layer between System and App •
Not included in production builds • Basic build and device information
Networking • Log levels • Changing endpoints • Mock endpoints
• delay • error rate
Status update • Manually trigger status update • Last successful
status update • Error count
Mock location • Mock location provider for whole system •
Only on development devices • KML support still missing
Animations • In progress • Change animation duration on the
fly • Disable animations completely 29
Monkey friendly boolean provideIsMonkey() { return ActivityManager.isUserAMonkey(); } • Adjusted
behaviour for monkeys • Using mock api endpoint • Less UI validations • No debug drawer
In Progress
Dependency Locking • CI handles library updates • No dynamic
library versions • Limited to minor version updates • Limitations with Circle CI
Multi Module Structure Wandera App
Multi Module Structure Wandera App Wandera Debug Wandera Base
Dagger 2 • Developed by Google • Uses annotation processing
• No reflection • Experimental support in Wandera
Looking Into
Jack & Jill • New Android tool chain • No
annotation processing support (yet) • Built in proguard support • Faster builds
Buck • Gradle Alternative • Opensource, developed by Facebook •
Faster than Gradle (for now) • Missing some features
Circle CI • Travis CI alternative • Beta support for
Android and iOS • Supported by Android Check Plugin • Pros and cons compared to Cricle CI
Questions?