JustSharing: Lessons in Android development from Beamly

Post on 27-Jun-2015

143 views 3 download

Tags:

description

JustSharing: Lessons in Android development from Beamly by Tim Russell

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?

tim@beamly.com

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.