SlideShare a Scribd company logo
1 of 32
Download to read offline
Beating Android Fragmentation
Juan Gomez
Agenda
• Intro
• Types of fragmentation
• Tools
• Best practices
• Review
• Q&A

!2
Intro
Who am I?
• Mobile Engineer at Eventbrite
• Previously at OneLouder Apps
• Android & Python Developer

!3
Eventbrite by the Numbers

Over 2 million events


150 million tickets sold 

$2 billion in gross ticket sales

Events in 179 countries
Intro
Slides:
• http://lanyrd.com/profile/juandg/

!5
ANDROID FRAGMENTATION
Is it really that bad?

!
!
!
!
!
!

Android Fragmentation Visualized (http://bit.ly/1fvOXF0)
!7
Types of fragmentation
• OS Fragmentation
• OEM Fragmentation
• Hardware Fragmentation

!8
OS Fragmentation
Mainly refers to the different versions of Android being
used at the same time

!9
OS Fragmentation
• Android Forks
• Other OSes with Android app support

!10
OEM fragmentation
• Skins
• TouchWiz (Samsung)
• Sense (HTC)
• MotoBlur (Motorola)
• OEM OS modifications.
• Changes to AOSP even on certain API calls.

!11
HW Fragmentation
• All the different types of Hardware features
(keyboard, camera, screen, HW buttons, etc).

!12
HW Fragmentation
• Android is designed to manage HW fragmentation
• The pain points in this area are on low level things like
different chipsets, GPUs, CPU cores, etc.
• Android x86 is the extreme example of this.

!13
TOOLS
The Basics
• Set minSdkVersion to the lowest API Level you want
to support.
• Set targetSdkVersion to the current highest API
Level.
• Use Android Lint to find code that is not supported
by your minimum API Level (and other possible
problems).
• Use fragments when possible.
!15
The Basics
• Encapsulate your version checking logic
• Don’t fill your code with this:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.#####)

• Use the Support Libraries
• Follow the Android Design Guidelines
• http://bit.ly/1hMUNmX
• Beware of Google Play Services!
!16
Support Libraries
• Support Library v4
• Fragments
• Rich Notifications, View Pager, Navigation Drawer,
Accessibility, Loaders.
• Support Library v7
• ActionBarCompat
• Grid Layout, Media Router
• Support Library v8
• Renderscript for API Level < 14
!17
3rd-party libraries
• ActionBarSherlock
• NineOldAndroids
• Android Asset Studio
• http://bit.ly/Lo6Xb5
• Square libraries:
• OkHttp, Picasso, Wire, Retrofit
• CommonsWare libraries
• http://bit.ly/1d7NQs0
!18
HTTP Stack
• Avoid using Apache HTTPClient
• Only use if you’re still supporting API Level < 10
• You should be using URLConnection and its
descendants.
• Better yet use OkHttp from Square (fork of
HttpURLConnection).
• You could also use Volley from Google
!19
Migrate to Gradle
• Gradle is a powerful tool that can help manage
complicated compatibility scenarios.
• Use “flavors” and “buildTypes” to create different
APKs for different OSes, chipsets, etc (Kindle, Nook,
Tegra, x86, Blackberry, even 2.x and 4.x versions).

!20
BEST PRACTICES
API Levels Recommendations
• Older projects should be supporting API Level ≥ 8
• Recommended would be API Level ≥ 10
• If you’re already using ActionBarSherlock, no need
to migrate to ActionBarCompat.
• New projects should start with minSdkVersion=”14”
• If you absolutely have to support API Level ≥ 8 then
use ActionBarCompat.
!22
minSdkVersion=”14”
• This is a new “movement”
within the Android community
that advocates dropping
support for older versions of
Android (mainly 2.x)
!

• Started by Jeff Gilfelt at
Google I/O last year
• Advocated by Reto Meier from
Google during I/O and other
events.
!23
Lots of Testing
• Hopefully automated!
• Test on actual devices
• Use tools like JUnit, Espresso, Monkey, Roboelectric,
Robotium, etc.
• Leverage something like Spoon (from Square) to run
your tests on multiple devices.

!24
Leverage analytics
• Measure everything
• Make decisions
based on your data
• Analytics suites:
• Flurry
• MixPanel

!25
Crash reporting
• Get a tool to monitor crashes
• Lots of options, including:
• Crashlytics (Free)
• Crittercism
• HockeyApp
• Some analytics suites provide this as well (like Flurry)
• Worst case, use Google Play Dev Console
!26
Tools from Google
• Multiple APK support.
• Alpha and Beta groups
• Combined with Analytics + Crash reporting
• Beta users can’t post reviews
• Staged rollouts.

!27
Summary
•
•
•
•
•
•
•
•
•

Android fragmentation is massively over hyped!
Be aware of the different types of fragmentation
Use libraries to homogenize feature support.
Start planning on dropping 2.x support (Old projects)
minSdkVersion=”14” on all new projects
Leverage Gradle to create multiple versions if needed.
Do lots of tests (Hopefully automated and on devices)
Use Analytics + Crash reporting
Create a Beta community and use staged rollouts.

• Rinse and repeat 😜
!28
Eventbrite Tech Talk:
Android Development + Design

February 18, 2014 @ 6:30 PM

http://bit.ly/1e7oIrl
We’re hiring!

If you’re interested, let’s talk after the session

eventbrite.com/jobs
Questions?

Download our apps:

eventbrite.com/eventbriteapp
Thank You!
@_juandg
jgomez@eventbrite.com

More Related Content

Similar to Beating Android Fragmentation

Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Tomáš Kypta
 
Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA NITIN GUPTA
 
Android development
Android developmentAndroid development
Android developmentRaynax668
 
Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1Mohsen Mirhoseini
 
Presentation On Android
Presentation On AndroidPresentation On Android
Presentation On AndroidTeachMission
 
Presentation On Android
Presentation On AndroidPresentation On Android
Presentation On AndroidTeachMission
 
Android beyond the smartphone
Android beyond the smartphoneAndroid beyond the smartphone
Android beyond the smartphoneChris Simmonds
 
Android development
Android developmentAndroid development
Android developmentRhitik Kumar
 
Building iPhone/Andriod Apps with Titanium Appcelerator for a Rails Backend
Building iPhone/Andriod Apps with Titanium Appcelerator for a Rails BackendBuilding iPhone/Andriod Apps with Titanium Appcelerator for a Rails Backend
Building iPhone/Andriod Apps with Titanium Appcelerator for a Rails BackendAndrew Chalkley
 
Android presantation
Android presantationAndroid presantation
Android presantationUdayJethva
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkGorm Lai
 
Embedded Android Workshop at Android Open 2011
Embedded Android Workshop at Android Open 2011Embedded Android Workshop at Android Open 2011
Embedded Android Workshop at Android Open 2011Opersys inc.
 
Titanium appcelerator kickstart
Titanium appcelerator kickstartTitanium appcelerator kickstart
Titanium appcelerator kickstartAlessio Ricco
 
Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Opersys inc.
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
 

Similar to Beating Android Fragmentation (20)

Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
 
Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA
 
Android development
Android developmentAndroid development
Android development
 
Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1Tehran's 1st Android bootcamp - Part1
Tehran's 1st Android bootcamp - Part1
 
Why Flutter.pdf
Why Flutter.pdfWhy Flutter.pdf
Why Flutter.pdf
 
Presentation On Android
Presentation On AndroidPresentation On Android
Presentation On Android
 
Presentation On Android
Presentation On AndroidPresentation On Android
Presentation On Android
 
Android beyond the smartphone
Android beyond the smartphoneAndroid beyond the smartphone
Android beyond the smartphone
 
Android development
Android developmentAndroid development
Android development
 
Building iPhone/Andriod Apps with Titanium Appcelerator for a Rails Backend
Building iPhone/Andriod Apps with Titanium Appcelerator for a Rails BackendBuilding iPhone/Andriod Apps with Titanium Appcelerator for a Rails Backend
Building iPhone/Andriod Apps with Titanium Appcelerator for a Rails Backend
 
Android presantation
Android presantationAndroid presantation
Android presantation
 
IOS ecosystem
IOS ecosystemIOS ecosystem
IOS ecosystem
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
 
Android Tutorial
Android TutorialAndroid Tutorial
Android Tutorial
 
Android Presentation
Android PresentationAndroid Presentation
Android Presentation
 
Android technology
Android technology Android technology
Android technology
 
Embedded Android Workshop at Android Open 2011
Embedded Android Workshop at Android Open 2011Embedded Android Workshop at Android Open 2011
Embedded Android Workshop at Android Open 2011
 
Titanium appcelerator kickstart
Titanium appcelerator kickstartTitanium appcelerator kickstart
Titanium appcelerator kickstart
 
Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 

Recently uploaded

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Recently uploaded (20)

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

Beating Android Fragmentation

  • 2. Agenda • Intro • Types of fragmentation • Tools • Best practices • Review • Q&A !2
  • 3. Intro Who am I? • Mobile Engineer at Eventbrite • Previously at OneLouder Apps • Android & Python Developer !3
  • 4. Eventbrite by the Numbers Over 2 million events
 150 million tickets sold 
 $2 billion in gross ticket sales
 Events in 179 countries
  • 7. Is it really that bad? ! ! ! ! ! ! Android Fragmentation Visualized (http://bit.ly/1fvOXF0) !7
  • 8. Types of fragmentation • OS Fragmentation • OEM Fragmentation • Hardware Fragmentation !8
  • 9. OS Fragmentation Mainly refers to the different versions of Android being used at the same time !9
  • 10. OS Fragmentation • Android Forks • Other OSes with Android app support !10
  • 11. OEM fragmentation • Skins • TouchWiz (Samsung) • Sense (HTC) • MotoBlur (Motorola) • OEM OS modifications. • Changes to AOSP even on certain API calls. !11
  • 12. HW Fragmentation • All the different types of Hardware features (keyboard, camera, screen, HW buttons, etc). !12
  • 13. HW Fragmentation • Android is designed to manage HW fragmentation • The pain points in this area are on low level things like different chipsets, GPUs, CPU cores, etc. • Android x86 is the extreme example of this. !13
  • 14. TOOLS
  • 15. The Basics • Set minSdkVersion to the lowest API Level you want to support. • Set targetSdkVersion to the current highest API Level. • Use Android Lint to find code that is not supported by your minimum API Level (and other possible problems). • Use fragments when possible. !15
  • 16. The Basics • Encapsulate your version checking logic • Don’t fill your code with this: if (Build.VERSION.SDK_INT < Build.VERSION_CODES.#####) • Use the Support Libraries • Follow the Android Design Guidelines • http://bit.ly/1hMUNmX • Beware of Google Play Services! !16
  • 17. Support Libraries • Support Library v4 • Fragments • Rich Notifications, View Pager, Navigation Drawer, Accessibility, Loaders. • Support Library v7 • ActionBarCompat • Grid Layout, Media Router • Support Library v8 • Renderscript for API Level < 14 !17
  • 18. 3rd-party libraries • ActionBarSherlock • NineOldAndroids • Android Asset Studio • http://bit.ly/Lo6Xb5 • Square libraries: • OkHttp, Picasso, Wire, Retrofit • CommonsWare libraries • http://bit.ly/1d7NQs0 !18
  • 19. HTTP Stack • Avoid using Apache HTTPClient • Only use if you’re still supporting API Level < 10 • You should be using URLConnection and its descendants. • Better yet use OkHttp from Square (fork of HttpURLConnection). • You could also use Volley from Google !19
  • 20. Migrate to Gradle • Gradle is a powerful tool that can help manage complicated compatibility scenarios. • Use “flavors” and “buildTypes” to create different APKs for different OSes, chipsets, etc (Kindle, Nook, Tegra, x86, Blackberry, even 2.x and 4.x versions). !20
  • 22. API Levels Recommendations • Older projects should be supporting API Level ≥ 8 • Recommended would be API Level ≥ 10 • If you’re already using ActionBarSherlock, no need to migrate to ActionBarCompat. • New projects should start with minSdkVersion=”14” • If you absolutely have to support API Level ≥ 8 then use ActionBarCompat. !22
  • 23. minSdkVersion=”14” • This is a new “movement” within the Android community that advocates dropping support for older versions of Android (mainly 2.x) ! • Started by Jeff Gilfelt at Google I/O last year • Advocated by Reto Meier from Google during I/O and other events. !23
  • 24. Lots of Testing • Hopefully automated! • Test on actual devices • Use tools like JUnit, Espresso, Monkey, Roboelectric, Robotium, etc. • Leverage something like Spoon (from Square) to run your tests on multiple devices. !24
  • 25. Leverage analytics • Measure everything • Make decisions based on your data • Analytics suites: • Flurry • MixPanel !25
  • 26. Crash reporting • Get a tool to monitor crashes • Lots of options, including: • Crashlytics (Free) • Crittercism • HockeyApp • Some analytics suites provide this as well (like Flurry) • Worst case, use Google Play Dev Console !26
  • 27. Tools from Google • Multiple APK support. • Alpha and Beta groups • Combined with Analytics + Crash reporting • Beta users can’t post reviews • Staged rollouts. !27
  • 28. Summary • • • • • • • • • Android fragmentation is massively over hyped! Be aware of the different types of fragmentation Use libraries to homogenize feature support. Start planning on dropping 2.x support (Old projects) minSdkVersion=”14” on all new projects Leverage Gradle to create multiple versions if needed. Do lots of tests (Hopefully automated and on devices) Use Analytics + Crash reporting Create a Beta community and use staged rollouts. • Rinse and repeat 😜 !28
  • 29. Eventbrite Tech Talk: Android Development + Design February 18, 2014 @ 6:30 PM http://bit.ly/1e7oIrl
  • 30. We’re hiring! If you’re interested, let’s talk after the session eventbrite.com/jobs