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
Challenges and lessons from porting a complex i...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Mike Dai Wang
March 27, 2017
Technology
1
99
Challenges and lessons from porting a complex iOS app to Android
Mike Dai Wang
March 27, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
160
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
140
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
600
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
100
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
250
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
310
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
1
2.8k
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.5k
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.8k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
380
超初心者からでも大丈夫!オープンソース半導体の楽しみ方〜今こそ!オレオレチップをつくろう〜
keropiyo
0
110
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
180
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
120
The browser strikes back
jonoalderson
0
390
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
310
Raft: Consensus for Rubyists
vanstee
141
7.3k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
The Limits of Empathy - UXLibs8
cassininazir
1
220
We Are The Robots
honzajavorek
0
160
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
650
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
940
Building Applications with DynamoDB
mza
96
6.9k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
110
Transcript
Challenges and lessons from porting a complex iOS app to
Android Mike Dai Wang
“We have this iOS app, now let’s port it to
Android!”
Agenda 1 - The iOS app & cutting scope 2
- UI Design 3 - Process 4 - Architecture 5 - Lessons & challenges
1 - The iOS app & cutting scope
None
None
Admin Fan Messaging Scorekeeping Play by Play Game Recap Live
Game Stream Player Stats Scheduling Roster / Lineup Teams IAP Baseball Logic
Easy to decide what to do Hard to decide what
not to do
Admin Fan Messaging Scorekeeping Play by Play Game Recap Live
Game Stream Player stats Scheduling Roster / Lineup Teams IAP Baseball Logic
2 - UI Design
None
None
None
None
None
None
3 - Process
Let engineers focus on engineering - CI & CD -
Standardize coding style - Setup automation pipeline - Make use of tools - Have good test coverage
PR Quality Check Unit Tests Connected Tests Code Review QA
Alpha Beta
Make use of great tools - Alternatives to Jenkins: Bitrise.io,
Fastlane - Crash reporting: Crashlytics - Error tracking / logging: Rollbar - Analytics: Firebase, Facebook, Snowplow
Get up to speed on Android quickly - Rely on
automated checks and tests - Crash course on view lifecycle & Android SDK - Learn by doing - Modularize & limit impact - Decouple from Android - No one on an island alone
4 - Architecture
Things to keep in mind - Engineers are new to
Android - Efficient & parallel development - Maintainable - Testable - Technical debt
Dependency Injection - Dagger App Scope User Scope Team Scope
Game Scope
Admin Fan Messaging Scorekeeping Play by Play Game Recap Player
stats Roster / Lineup Teams Baseball Logic
Model View Presenter - Why?
None
RxJava / Information Flow View Presenter Repository Network Database Service
Rx stream
None
Admin Fan Messaging Scorekeeping Play by Play Game Recap Player
stats Roster / Lineup Teams Baseball Logic
Messaging Game Recap Baseball Logic
5 - Lessons & Challenges
Custom drawings & animations
None
None
Rx - More than just Observable
Rx - Don’t break the chain
Rx - Subjects Rx - Subscriptions
Dagger - Scope depth - Use multi-binding or AndroidInjector -
Component caching & reuse - Bloated application class - Asynchronous injection - Inject Observables
Results
- App launched by 5 month mark - Built an
Android team - 4.5* review - biggest complaint: missing iOS features ¯\_(ツ)_/¯ - 99.6% crash free - >100k downloads - People are paying $
Q & A