SlideShare a Scribd company logo
1 of 21
Download to read offline
Tools/Processes for serious
android app development
Gaurav Lochan
Little Eye Labs

Saturday 7 December 13
Introduction
Lots of folks are getting serious about building on
Android
Android development is sufficiently different from web
and desktop software
If you’re starting out to build a serious app, there are
many choices you have to take. I’ll list them and make
recommendations (suited for a small team starting up).
I’ve tried to simplify things, but, YMMV.

Saturday 7 December 13
Me?
I’ve worked as an engineer/tech-lead/manager at
Microsoft, VMware, Flipkart and a few startups.
Worked on Android for 3 years now.
Ran a startup that built an android app + backend
Managed a team at Flipkart, responsible for 5 apps,
applied lean-startup principles [video, slides]
Now I build a tool to help android devs (Little Eye Labs)

Saturday 7 December 13
Overview
IDE

Continuous Integration

Build

Device Matrix testing

Source Control

Performance testing

Bug/Task tracking

Beta testing

Crash reporting

A/B testing

Analytics

Backend-as-a-Service

Test Automation

Saturday 7 December 13
IDE
Eclipse was the original supported IDE. Not intuitive
and has quirks.
Google is now pushing Android Studio (built on IntelliJ).
More intuitive IDE, integrates well with gradle (the new
build system), but is still pre-release.
If starting from scratch, learn to use Android Studio,
unless the bugs block you. It’s harder to switch later.

Saturday 7 December 13
Build
Ant is the old supported way
Gradle is new shiny thing
Maven is used, though mainly by open source libs, or
existing maven shops
Start with Gradle, unless you have lots of experience
with Ant/Maven. But do choose one so that you can
automate builds from cmdline
At Flipkart, we built and shipped from Eclipse :-(

Saturday 7 December 13
Source Control
Git is absolutely incredible, I’m not going to suggest
anything else
But at least 1 dev on your team needs to understand
it well.
Great hosting options - GitHub, Bitbucket, Assembla
GitHub is well-understood but expensive. BitBucket is
free and has other useful tools.
Use any client (I use both cmdline & SourceTree)

Saturday 7 December 13
Bug/Task Tracking
The Github / Bitbucket trackers are good enough
GitHub is more basic but ‘Milestones’ can be used
for release mgmt (used them at flipkart)
Asana is great for task tracking, can be used for bugs,
not great for release mgmt.
Trello / Pivotal tracker are great for agile project mgmt,
not so much for bugs.

Saturday 7 December 13
Crash Reporting SDK
You *must* use one, from day 1.
ACRA - More flexible, but doesn’t come with it’s own
collection/reporting service.
Crittercism, Bugsense, Crashlytics - all good products
I like Crittercism the most, but Crashlytics is free!
Register two instances (Dev and Prod) to separate
the dev noise from production issues.

Saturday 7 December 13
Analytics SDK
You *must* use one before you sending builds out for
feedback, to understand what users are doing!
Start tracking broad analytics that make sense - be
prepared add more with each iteration
Google Analytics and Flurry have been around for a
while. MixPanel on Android is new.
Use an abstraction layer so you can switch if needed

Saturday 7 December 13
Automation: Unit Testing
ie, Testing code in isolation, not the whole product.
Eclipse/ADT support junit out of the box. But junit tests
won’t run on your desktop (calls to android.jar will fail)
so you need to mock out android.jar.
RoboElectric
Mockito
AndroidMock

Saturday 7 December 13
Automation: Integration
ie, Testing the complete product (or at least, different
parts of the product working together)
Frameworks basically provide a way to trigger an action
from the UI, and then check for the different outcomes.
MonkeyRunner from Google (Python)
Robotium (Java)
Calabash

Saturday 7 December 13
Automation: Others
Monkey tool (from Google) - fuzz-testing tool
Spoon (from Square) pushes tests to multiple devices,
aggregate results, and takes screenshots.
FEST for more readable assertions (from Square)
Services that auto-generate tests (e.g. TestDroid,
Xamarin TestCloud, AppThwack)
Recomendation: Start with Robotium for UI,
RoboElectric for unit tests. Plan for Spoon.

Saturday 7 December 13
Continuous Integration (CI)
Jenkins and Travis are popular CI servers for android
I’ve only used Jenkins, which was easy to set up
Android plugin to create different emulators
You *must* generate your builds from your CI server,
and at least start the app on an emulator.
You *should* configure CI to create emulators with
different OS versions/configs, and test each build for a
bit with the ‘monkey’ tool - Bang for the buck.

Saturday 7 December 13
A/B Testing
Perhaps not needed while getting your first release out,
but useful once you have more users
clutch.io: Open-sourced by Twitter. You’ll need to
host it, but it’s open source!
Lots of paid services - haven’t used them so can’t
really comment on them.
Only when you have enough active users
Needless to say, need to collect analytics first.

Saturday 7 December 13
Device Matrix testing
You *must* test on multiple devices - OS versions,
screen sizes, manufactures, hardware, network
configs.
Buy some test devices across the matrix, but...
test OS/Screen sizes against emulators and/or
manymo.com
Test on real world devices through device labs
Device Anywhere, pCloudy, etc

Saturday 7 December 13
Performance Testing
App Performance is about responsiveness and system
resource consumption.
Responsiveness
Badly implemented UI - Use tools like Hierarchy
Viewer, Droid Inspector. Android 4.x has tools in
‘developer options’ for quickly figuring issues.
Memory allocations - Little Eye and/or MAT
CPU - TraceView, Systrace, Little Eye

Saturday 7 December 13
Performance Testing (2)
Understanding Resource consumption
Battery - Little Eye can show you consumption for
each thing that your app does
Network
DDMS, Little Eye give broad network usage
graphs
Little Eye, New Relic, Crittercism can give detailed
HTTP stats info

Saturday 7 December 13
Beta-testing
It’s critical to get early feedback (and device coverage!),
before pushing to the store.
You need to be able to manage/track the builds, and
collect feedback.
Google Play beta testing does the former
You need to do the latter. Crash reporting and
Analytics will help here.
Services for system data, e.g. BetaGlide/TestFairy

Saturday 7 December 13
Backend-as-a-Service
Most apps talk to a backend API. If the backend is
simple and is persisting data, you can use a hosted
service and not write/maintain one yourself.
Huge productivity win if your devs are app guys
I’ve used Parse and StackMob in production (both
support server-side code). Parse has better docs,
StackMob supports a dual ‘staging/prod’ environment.
FireBase is popular for real-time apps

Saturday 7 December 13
Summary
Lots of stuff to think about before you jump in
You can choose not to do all of them, but now it’s a
conscious decision :-). Plan around this upfront, then
focus your efforts on building a great app.
Share feedback/comments/experiences:
@gauravl
http://www.slideshare.net/gauravl/

Saturday 7 December 13

More Related Content

What's hot

Android Testing: An Overview
Android Testing: An OverviewAndroid Testing: An Overview
Android Testing: An OverviewSmartLogic
 
Head first android apps dev tools
Head first android apps dev toolsHead first android apps dev tools
Head first android apps dev toolsShaka Huang
 
Android things introduction - Development for IoT
Android things introduction - Development for IoTAndroid things introduction - Development for IoT
Android things introduction - Development for IoTBartosz Kosarzycki
 
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginMastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginXavier Hallade
 
13 top react native animation libraries to create stellar ux
13 top react native animation libraries to create stellar ux13 top react native animation libraries to create stellar ux
13 top react native animation libraries to create stellar uxKaty Slemon
 

What's hot (6)

Android Testing: An Overview
Android Testing: An OverviewAndroid Testing: An Overview
Android Testing: An Overview
 
Android studio
Android studioAndroid studio
Android studio
 
Head first android apps dev tools
Head first android apps dev toolsHead first android apps dev tools
Head first android apps dev tools
 
Android things introduction - Development for IoT
Android things introduction - Development for IoTAndroid things introduction - Development for IoT
Android things introduction - Development for IoT
 
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginMastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
 
13 top react native animation libraries to create stellar ux
13 top react native animation libraries to create stellar ux13 top react native animation libraries to create stellar ux
13 top react native animation libraries to create stellar ux
 

Similar to Tools/Processes for serious android app development

iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to productjoeysim
 
Reverse engineering and instrumentation of android apps
Reverse engineering and instrumentation of android appsReverse engineering and instrumentation of android apps
Reverse engineering and instrumentation of android appsGaurav Lochan
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven developmenttoteb5
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Engineering culture
Engineering cultureEngineering culture
Engineering culturePamela Fox
 
Use Ruby to Write (and Test) Your Next Android App
Use Ruby to Write (and Test) Your Next Android AppUse Ruby to Write (and Test) Your Next Android App
Use Ruby to Write (and Test) Your Next Android AppJoel Byler
 
From Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDEFrom Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDEintelliyole
 
Testing html5 meetup slideshare
Testing html5 meetup slideshareTesting html5 meetup slideshare
Testing html5 meetup slideshareMario Noble
 
Mobile UI Testing using Appium and Docker
Mobile UI Testing using Appium and DockerMobile UI Testing using Appium and Docker
Mobile UI Testing using Appium and DockerMoataz Nabil
 
Mobile development in 2020
Mobile development in 2020 Mobile development in 2020
Mobile development in 2020 Bogusz Jelinski
 
Scaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global OrganizationScaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global OrganizationPuppet
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011sullis
 
Android testing
Android testingAndroid testing
Android testingBitbar
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakSigma Software
 
Chrome Dev Summit Highlights (NYC GDG Dec 2013)
Chrome Dev Summit Highlights (NYC GDG Dec 2013)Chrome Dev Summit Highlights (NYC GDG Dec 2013)
Chrome Dev Summit Highlights (NYC GDG Dec 2013)Nitya Narasimhan
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortalscgack
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernizationdevObjective
 

Similar to Tools/Processes for serious android app development (20)

iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
 
Reverse engineering and instrumentation of android apps
Reverse engineering and instrumentation of android appsReverse engineering and instrumentation of android apps
Reverse engineering and instrumentation of android apps
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Engineering culture
Engineering cultureEngineering culture
Engineering culture
 
Android
AndroidAndroid
Android
 
Use Ruby to Write (and Test) Your Next Android App
Use Ruby to Write (and Test) Your Next Android AppUse Ruby to Write (and Test) Your Next Android App
Use Ruby to Write (and Test) Your Next Android App
 
From Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDEFrom Renamer Plugin to Polyglot IDE
From Renamer Plugin to Polyglot IDE
 
Testing html5 meetup slideshare
Testing html5 meetup slideshareTesting html5 meetup slideshare
Testing html5 meetup slideshare
 
Mobile UI Testing using Appium and Docker
Mobile UI Testing using Appium and DockerMobile UI Testing using Appium and Docker
Mobile UI Testing using Appium and Docker
 
Mobile development in 2020
Mobile development in 2020 Mobile development in 2020
Mobile development in 2020
 
Scaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global OrganizationScaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global Organization
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
 
How to Build a DevOps Toolchain
How to Build a DevOps ToolchainHow to Build a DevOps Toolchain
How to Build a DevOps Toolchain
 
Android testing
Android testingAndroid testing
Android testing
 
A false digital alibi on mac os x
A false digital alibi on mac os xA false digital alibi on mac os x
A false digital alibi on mac os x
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
 
Chrome Dev Summit Highlights (NYC GDG Dec 2013)
Chrome Dev Summit Highlights (NYC GDG Dec 2013)Chrome Dev Summit Highlights (NYC GDG Dec 2013)
Chrome Dev Summit Highlights (NYC GDG Dec 2013)
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
 

Recently uploaded

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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
 
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
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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...
 
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
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

Tools/Processes for serious android app development

  • 1. Tools/Processes for serious android app development Gaurav Lochan Little Eye Labs Saturday 7 December 13
  • 2. Introduction Lots of folks are getting serious about building on Android Android development is sufficiently different from web and desktop software If you’re starting out to build a serious app, there are many choices you have to take. I’ll list them and make recommendations (suited for a small team starting up). I’ve tried to simplify things, but, YMMV. Saturday 7 December 13
  • 3. Me? I’ve worked as an engineer/tech-lead/manager at Microsoft, VMware, Flipkart and a few startups. Worked on Android for 3 years now. Ran a startup that built an android app + backend Managed a team at Flipkart, responsible for 5 apps, applied lean-startup principles [video, slides] Now I build a tool to help android devs (Little Eye Labs) Saturday 7 December 13
  • 4. Overview IDE Continuous Integration Build Device Matrix testing Source Control Performance testing Bug/Task tracking Beta testing Crash reporting A/B testing Analytics Backend-as-a-Service Test Automation Saturday 7 December 13
  • 5. IDE Eclipse was the original supported IDE. Not intuitive and has quirks. Google is now pushing Android Studio (built on IntelliJ). More intuitive IDE, integrates well with gradle (the new build system), but is still pre-release. If starting from scratch, learn to use Android Studio, unless the bugs block you. It’s harder to switch later. Saturday 7 December 13
  • 6. Build Ant is the old supported way Gradle is new shiny thing Maven is used, though mainly by open source libs, or existing maven shops Start with Gradle, unless you have lots of experience with Ant/Maven. But do choose one so that you can automate builds from cmdline At Flipkart, we built and shipped from Eclipse :-( Saturday 7 December 13
  • 7. Source Control Git is absolutely incredible, I’m not going to suggest anything else But at least 1 dev on your team needs to understand it well. Great hosting options - GitHub, Bitbucket, Assembla GitHub is well-understood but expensive. BitBucket is free and has other useful tools. Use any client (I use both cmdline & SourceTree) Saturday 7 December 13
  • 8. Bug/Task Tracking The Github / Bitbucket trackers are good enough GitHub is more basic but ‘Milestones’ can be used for release mgmt (used them at flipkart) Asana is great for task tracking, can be used for bugs, not great for release mgmt. Trello / Pivotal tracker are great for agile project mgmt, not so much for bugs. Saturday 7 December 13
  • 9. Crash Reporting SDK You *must* use one, from day 1. ACRA - More flexible, but doesn’t come with it’s own collection/reporting service. Crittercism, Bugsense, Crashlytics - all good products I like Crittercism the most, but Crashlytics is free! Register two instances (Dev and Prod) to separate the dev noise from production issues. Saturday 7 December 13
  • 10. Analytics SDK You *must* use one before you sending builds out for feedback, to understand what users are doing! Start tracking broad analytics that make sense - be prepared add more with each iteration Google Analytics and Flurry have been around for a while. MixPanel on Android is new. Use an abstraction layer so you can switch if needed Saturday 7 December 13
  • 11. Automation: Unit Testing ie, Testing code in isolation, not the whole product. Eclipse/ADT support junit out of the box. But junit tests won’t run on your desktop (calls to android.jar will fail) so you need to mock out android.jar. RoboElectric Mockito AndroidMock Saturday 7 December 13
  • 12. Automation: Integration ie, Testing the complete product (or at least, different parts of the product working together) Frameworks basically provide a way to trigger an action from the UI, and then check for the different outcomes. MonkeyRunner from Google (Python) Robotium (Java) Calabash Saturday 7 December 13
  • 13. Automation: Others Monkey tool (from Google) - fuzz-testing tool Spoon (from Square) pushes tests to multiple devices, aggregate results, and takes screenshots. FEST for more readable assertions (from Square) Services that auto-generate tests (e.g. TestDroid, Xamarin TestCloud, AppThwack) Recomendation: Start with Robotium for UI, RoboElectric for unit tests. Plan for Spoon. Saturday 7 December 13
  • 14. Continuous Integration (CI) Jenkins and Travis are popular CI servers for android I’ve only used Jenkins, which was easy to set up Android plugin to create different emulators You *must* generate your builds from your CI server, and at least start the app on an emulator. You *should* configure CI to create emulators with different OS versions/configs, and test each build for a bit with the ‘monkey’ tool - Bang for the buck. Saturday 7 December 13
  • 15. A/B Testing Perhaps not needed while getting your first release out, but useful once you have more users clutch.io: Open-sourced by Twitter. You’ll need to host it, but it’s open source! Lots of paid services - haven’t used them so can’t really comment on them. Only when you have enough active users Needless to say, need to collect analytics first. Saturday 7 December 13
  • 16. Device Matrix testing You *must* test on multiple devices - OS versions, screen sizes, manufactures, hardware, network configs. Buy some test devices across the matrix, but... test OS/Screen sizes against emulators and/or manymo.com Test on real world devices through device labs Device Anywhere, pCloudy, etc Saturday 7 December 13
  • 17. Performance Testing App Performance is about responsiveness and system resource consumption. Responsiveness Badly implemented UI - Use tools like Hierarchy Viewer, Droid Inspector. Android 4.x has tools in ‘developer options’ for quickly figuring issues. Memory allocations - Little Eye and/or MAT CPU - TraceView, Systrace, Little Eye Saturday 7 December 13
  • 18. Performance Testing (2) Understanding Resource consumption Battery - Little Eye can show you consumption for each thing that your app does Network DDMS, Little Eye give broad network usage graphs Little Eye, New Relic, Crittercism can give detailed HTTP stats info Saturday 7 December 13
  • 19. Beta-testing It’s critical to get early feedback (and device coverage!), before pushing to the store. You need to be able to manage/track the builds, and collect feedback. Google Play beta testing does the former You need to do the latter. Crash reporting and Analytics will help here. Services for system data, e.g. BetaGlide/TestFairy Saturday 7 December 13
  • 20. Backend-as-a-Service Most apps talk to a backend API. If the backend is simple and is persisting data, you can use a hosted service and not write/maintain one yourself. Huge productivity win if your devs are app guys I’ve used Parse and StackMob in production (both support server-side code). Parse has better docs, StackMob supports a dual ‘staging/prod’ environment. FireBase is popular for real-time apps Saturday 7 December 13
  • 21. Summary Lots of stuff to think about before you jump in You can choose not to do all of them, but now it’s a conscious decision :-). Plan around this upfront, then focus your efforts on building a great app. Share feedback/comments/experiences: @gauravl http://www.slideshare.net/gauravl/ Saturday 7 December 13