JustSharing: Lessons in Android development from Beamly
-
Upload
jg-hackers-justgiving-software-team -
Category
Technology
-
view
143 -
download
3
description
Transcript of JustSharing: Lessons in Android development from Beamly
Android Application
Tim RussellJustSharingAugust 2014
Overview
• What is Beamly?
• Evolution
• Design
• Implementation
• Lessons
Beamly, The Social and Content Network for TV
• How do I find the best shows to watch?
• Where is the best place to find the latest news around show
I love?
• Whenever and wherever I want, how can I chat and share
with other people that love the same TV shows as I do?
App Timeline
Nov 2011iOS App
1st Android ReleaseApr 2012
Sep 2012US Android
TabletSupportApr ‘13
Play Picks (us)Jul ‘13
Play Picks (uk)Jan ‘14
Top DeveloperMar ‘14
Editor’s ChoiceMay ’14
Jan 13 Rebrand
18 months
App Evolution
App Evolution
Our Android Ethos
• Following Google and wider Industry best-practices
• Interoperable with iOS users, but don’t copy app
• Android differences embraced
Design is critical
• Google Guidelines
• Keep abreast of other apps: exploit user familiarity
• User centric
• User testing
• A/B Testing
• Don’t just re-implement other platform
Design
• Responsive
– Phone > 7 inch > 10 inch
• Based on Holo Visual Language
– Maintaining a unique look and feel
– Roboto fonts used throughout
• Introducing Material Visual Language
UI Spec sheets
Android only app features
Use third party libs
• (Actionbar Sherlock)
• Volley (HTTP/Networking)
• Facebook SDK (Login)
• Google Play Services (Google+ Integration)
• Dagger (Compile-time dependency
injection)
• Otto (Event-bus)
• Urban Airship (GCM push notifications)
• Tape (Task queue)
•Gson (JSON (de)serialisation)
•Google Analytics
•Swrve (A/B testing)
•Flurry (analytics)
Most vanilla, some forked with bug fixes/enhancements
Application Architecture
• Standard Activity/Fragment lifecycle
• Compile-time Dependency injection via Dagger
– High-cohesion, loosely coupled
– Aids clean separation of responsibility
– Eases testing
• Manager classes with single responsibility, e.g:
– ConfigServiceManager, CurrentUserManager, FeedDownloadManager
Device Support
• API Level 15+ (Ice Cream Sandwich, 4.0.3)
– 86% of Android Devices Supported (based on Google’s distribution
numbers)
• Minimum 320x480 screen size
– Normal, Large, X-Large sizes
– MDPI and above
• Phones & Tablets
• Amazon Kindle, Blackberry
Testing
• JUnit tests
• Robolectric (Off-device testing)
• Mockito (Mocking)
• FEST assertions (Fluent
assertions)
– assertThat(actual).isEqualTo(expected)
• Calabash UI tests
– GIVEN, WHEN, THEN
• QA team (Feature, regression,
upgrade testing)
• Wide range of test devices in-
house:
– All Google Nexus devices
– All latest Samsung devices
– Majority of other manufacturers
Google Featuring
• Note what Google say
• Review team
– will give feedback
– with expectations
• Google Style Guidelines
• Navigation
• Responsive Layouts
• Touch Feedback
• Consistent Theming
• Android only (Widgets, Notifs)
• Google+
Keep the momentum going
• Don’t reinvent
– Edge cases will burn time
– Devices will catch you out
– Much already tested code
• Treat Itches
– Uncomfortable code slows
dev
• Keep things Simple
– Things will change
– Simple is flexible
– Loosely couple features
– Greater release agility
Improve Quality
• Monitor crashes
– Most users don’t complain,
they simply don’t return
– Fixing crashes feels good
– Continuous incremental
improvements
• Carefully request ratings
• Monitor Play Store Feedback
– It’s the first thing users see
– Reply, politely
– Users can give insights:
make friends
Android Development
• The Good
– Third Party Libraries
– Fast release cycle
– Huge amount of
knowledge
– Google are keen to help
• The Less Good
– Fewer Android designers
– Huge number of devices
– Variability in
implementations
– Webviews
Lessons Learnt
• Design is important
• Quality is important
• Use what’s available
• Keep moving
Guiding Factors
• Innovate on product features
• Simplify where possible
• Follow patterns
• Keep improving
Questions?
LONDON
Drury House
34-43 Russell Street
London
WC2B 5HA
NEW YORK CITY
84 Wooster Street
Suite 703
New York
NY 10012
SYDNEY
22-36 Mountain Street
Suite 1.10
Ultimo
NSW 2007
© Beamly 2014. All Rights Reserved.