JustSharing: Lessons in Android development from Beamly

25
Android Application Tim Russell JustSharing August 2014

description

JustSharing: Lessons in Android development from Beamly by Tim Russell

Transcript of JustSharing: Lessons in Android development from Beamly

Page 1: JustSharing: Lessons in Android development from Beamly

Android Application

Tim RussellJustSharingAugust 2014

Page 2: JustSharing: Lessons in Android development from Beamly

Overview

• What is Beamly?

• Evolution

• Design

• Implementation

• Lessons

Page 3: JustSharing: Lessons in Android development from Beamly

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?

Page 4: JustSharing: Lessons in Android development from Beamly
Page 5: JustSharing: Lessons in Android development from Beamly

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

Page 6: JustSharing: Lessons in Android development from Beamly

18 months

Page 7: JustSharing: Lessons in Android development from Beamly

App Evolution

Page 8: JustSharing: Lessons in Android development from Beamly

App Evolution

Page 9: JustSharing: Lessons in Android development from Beamly

Our Android Ethos

• Following Google and wider Industry best-practices

• Interoperable with iOS users, but don’t copy app

• Android differences embraced

Page 10: JustSharing: Lessons in Android development from Beamly

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

Page 11: JustSharing: Lessons in Android development from Beamly

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

Page 12: JustSharing: Lessons in Android development from Beamly

UI Spec sheets

Page 13: JustSharing: Lessons in Android development from Beamly

Android only app features

Page 14: JustSharing: Lessons in Android development from Beamly

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

Page 15: JustSharing: Lessons in Android development from Beamly

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

Page 16: JustSharing: Lessons in Android development from Beamly

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

Page 17: JustSharing: Lessons in Android development from Beamly

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

Page 18: JustSharing: Lessons in Android development from Beamly

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+

Page 19: JustSharing: Lessons in Android development from Beamly

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

Page 20: JustSharing: Lessons in Android development from Beamly

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

Page 21: JustSharing: Lessons in Android development from Beamly

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

Page 22: JustSharing: Lessons in Android development from Beamly

Lessons Learnt

• Design is important

• Quality is important

• Use what’s available

• Keep moving

Page 23: JustSharing: Lessons in Android development from Beamly

Guiding Factors

• Innovate on product features

• Simplify where possible

• Follow patterns

• Keep improving

Page 24: JustSharing: Lessons in Android development from Beamly

Questions?

[email protected]

Page 25: JustSharing: Lessons in Android development from Beamly

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.