SlideShare a Scribd company logo
Android Frameworks
Highlighting the need for a solid
development framework
A little about me...
●
●
●
●

In the industry since 2002.
Started at Mutual Mobile in 2011.
Last hair cut 2011.
During which I’ve released 7 apps.
What is a framework
● Starting from scratch is unsustainable.
● A framework is a common code base that is
reusable in multiple contexts
● Basically its just an Android project ready to
be copied
● This is possible because most app share
common basic tasks
Technical benefits
● All libraries are bootstrapped and ready to
play
● Prevents reinventing the wheel
● Common build system interface
Organizational benefits
● Allows all team members a common ground
for communication
● Allows for cross team problem solving
● Allows for easy onboarding
● Unifies non collocated teams
● Measure team member success
Components of a Framework
Component: REST Consumption
Most app currently leverage REST. As such
this is one of your most important decisions.
● Existing Libraries
○
○
○
○
○

HttpUrlConnection
ApacheHTTPClient
Volley
Retrofit
okhttp
Component: Object Serialization
While ReST services are great at returning
strings, POJO’s are better.
● Existing Libraries
○
○
○
○

Gson
Jackson
Simple
Protobuf
Component: Caching
As mobile matures so do the users. Redundant
REST requests won’t cut it any more.
● Existing Libraries
○ Volley
○ okhttp
○ DiskLruCache
Component: Local Database
Invariably the app will need to keep state. Your
devs will need a place to keep it.
● Existing Libraries
○
○
○
○
○

Shared Preferences
Sqlite
Ormlite
GreenDAO
DB4O
Component: In App Communication
Communicating is hard, even more so if you
have Asynctasks, Services and, Fragments in
the mix.
● Existing Libraries
○ Android intent system
○ Otto
○ Eventbus
Component: Automated Testing
Well done. Here are the test results: You are a horrible
person. I'm serious, that's what it says: "A horrible person."
We weren't even testing for that.
-- GLaDOS / Portal 2
● Testing Options and Support Libraries
○ Android Test Projects
○ JUnit
○ Robolectric
○ Mockito
○ Robotium
○ uiautomator
Component: Build system & CI
Autonomous build creation is a wonderful thing
and gives you moment to moment status of
your projects.
● Existing Options
○ ANT build process
○ Maven (kinda...)
○ Gradle build process
Additional Considerations
This is not an exhaustive list keep your eyes
open for other things as well.
●
●
●
●

Logging
Crash reporting
Code Metrics
Image loading
Component: Glue
Even with the best libraries selected a
successful framework needs to be pulled
together.
Mutual Mobile’s Framework
Praxis: the process by which a theory, lesson,
or skill is realized.
● Libraries Used
○
○
○
○
○
○
○

ApacheHTTPClient
Gson / Simple
DB4O
Otto
JUnit / Robotium
ANT
Dagger
Care and feeding of your framework
● Frameworks only last so long.
● Some of the libraries listed haven’t had their
first birthday yet.
● Keep looking for new ways to improve and
adapt.
Keeping up with the times
● Some examples from Mutual Mobile’s
framework
○ On 2.2 we used a segmented controller but, after
ICS we changed to Android’s Actionbar.
○ We used singletons and static members to keep
system state, now we use our DI framework to
moderate standard POJOs, holding state
○ We used Handlers to communicate AsyncTask
results, now we ride the bus.
Questions?

More Related Content

What's hot

Why Concurrency is hard ?
Why Concurrency is hard ?Why Concurrency is hard ?
Why Concurrency is hard ?
Ramith Jayasinghe
 
Concurrency - Why it's hard ?
Concurrency - Why it's hard ?Concurrency - Why it's hard ?
Concurrency - Why it's hard ?
Ramith Jayasinghe
 
.NET compiler platform codename Roslyn
.NET compiler platform codename Roslyn.NET compiler platform codename Roslyn
.NET compiler platform codename Roslyn
Piotr Benetkiewicz
 
Cqrs
CqrsCqrs
8 - Javascript unit testing framework
8 - Javascript unit testing framework8 - Javascript unit testing framework
8 - Javascript unit testing frameworkNguyen Duc Phu
 
How to approach building GUIs using PyQT
How to approach building GUIs using PyQTHow to approach building GUIs using PyQT
How to approach building GUIs using PyQT
Jerlyn Manohar
 
Automatic Test 2019-07-25
Automatic Test 2019-07-25Automatic Test 2019-07-25
Automatic Test 2019-07-25
FedericoGuerinoni
 
The working architecture of NodeJs applications
The working architecture of NodeJs applicationsThe working architecture of NodeJs applications
The working architecture of NodeJs applications
Viktor Turskyi
 

What's hot (9)

CodeOff
CodeOffCodeOff
CodeOff
 
Why Concurrency is hard ?
Why Concurrency is hard ?Why Concurrency is hard ?
Why Concurrency is hard ?
 
Concurrency - Why it's hard ?
Concurrency - Why it's hard ?Concurrency - Why it's hard ?
Concurrency - Why it's hard ?
 
.NET compiler platform codename Roslyn
.NET compiler platform codename Roslyn.NET compiler platform codename Roslyn
.NET compiler platform codename Roslyn
 
Cqrs
CqrsCqrs
Cqrs
 
8 - Javascript unit testing framework
8 - Javascript unit testing framework8 - Javascript unit testing framework
8 - Javascript unit testing framework
 
How to approach building GUIs using PyQT
How to approach building GUIs using PyQTHow to approach building GUIs using PyQT
How to approach building GUIs using PyQT
 
Automatic Test 2019-07-25
Automatic Test 2019-07-25Automatic Test 2019-07-25
Automatic Test 2019-07-25
 
The working architecture of NodeJs applications
The working architecture of NodeJs applicationsThe working architecture of NodeJs applications
The working architecture of NodeJs applications
 

Similar to Android Frameworks: Highlighting the Need for a Solid Development Framework 

Innovation Generation - The Mobile Meetup: Android Best Practices
Innovation Generation - The Mobile Meetup: Android Best PracticesInnovation Generation - The Mobile Meetup: Android Best Practices
Innovation Generation - The Mobile Meetup: Android Best Practices
Solstice Mobile Argentina
 
Making Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF UsableMaking Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF Usable
Open Networking Summit
 
Keep calm and write reusable code in Android
Keep calm and write reusable code in AndroidKeep calm and write reusable code in Android
Keep calm and write reusable code in Android
Juan Camilo Sacanamboy
 
Choosing the right JavaScript library/framework/toolkit for our project
Choosing the right JavaScript library/framework/toolkit for our projectChoosing the right JavaScript library/framework/toolkit for our project
Choosing the right JavaScript library/framework/toolkit for our project
Hristo Chakarov
 
Pentester++
Pentester++Pentester++
Pentester++
CTruncer
 
Android Modularization
Android ModularizationAndroid Modularization
Android Modularization
Young-Hyuk Yoo
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
Paris Apostolopoulos
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
Stanislav Petrov
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentation
Drew Hannay
 
Cynthia Wu: Satisfaction Not Guaranteed
Cynthia Wu: Satisfaction Not GuaranteedCynthia Wu: Satisfaction Not Guaranteed
Cynthia Wu: Satisfaction Not Guaranteed
Anna Royzman
 
Feature Development with jQuery
Feature Development with jQueryFeature Development with jQuery
Feature Development with jQueryMichael Edwards
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
Bethmi Gunasekara
 
Iot development from prototype to production
Iot development from prototype to productionIot development from prototype to production
Iot development from prototype to production
Mender.io
 
Are app servers still fascinating
Are app servers still fascinatingAre app servers still fascinating
Are app servers still fascinating
Antonio Goncalves
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
Julien Dubois
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux Heritage
Opersys inc.
 
The Final Frontier, Automating Dynamic Security Testing
The Final Frontier, Automating Dynamic Security TestingThe Final Frontier, Automating Dynamic Security Testing
The Final Frontier, Automating Dynamic Security Testing
Matt Tesauro
 
What is dev ops?
What is dev ops?What is dev ops?
What is dev ops?
Mukta Aphale
 
IoT Development from Prototype to Production
IoT Development from Prototype to ProductionIoT Development from Prototype to Production
IoT Development from Prototype to Production
Mender.io
 

Similar to Android Frameworks: Highlighting the Need for a Solid Development Framework  (20)

Innovation Generation - The Mobile Meetup: Android Best Practices
Innovation Generation - The Mobile Meetup: Android Best PracticesInnovation Generation - The Mobile Meetup: Android Best Practices
Innovation Generation - The Mobile Meetup: Android Best Practices
 
Making Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF UsableMaking Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF Usable
 
Keep calm and write reusable code in Android
Keep calm and write reusable code in AndroidKeep calm and write reusable code in Android
Keep calm and write reusable code in Android
 
Choosing the right JavaScript library/framework/toolkit for our project
Choosing the right JavaScript library/framework/toolkit for our projectChoosing the right JavaScript library/framework/toolkit for our project
Choosing the right JavaScript library/framework/toolkit for our project
 
Pentester++
Pentester++Pentester++
Pentester++
 
Android Modularization
Android ModularizationAndroid Modularization
Android Modularization
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentation
 
Cynthia Wu: Satisfaction Not Guaranteed
Cynthia Wu: Satisfaction Not GuaranteedCynthia Wu: Satisfaction Not Guaranteed
Cynthia Wu: Satisfaction Not Guaranteed
 
Feature Development with jQuery
Feature Development with jQueryFeature Development with jQuery
Feature Development with jQuery
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
 
Iot development from prototype to production
Iot development from prototype to productionIot development from prototype to production
Iot development from prototype to production
 
Are app servers still fascinating
Are app servers still fascinatingAre app servers still fascinating
Are app servers still fascinating
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux Heritage
 
The Final Frontier, Automating Dynamic Security Testing
The Final Frontier, Automating Dynamic Security TestingThe Final Frontier, Automating Dynamic Security Testing
The Final Frontier, Automating Dynamic Security Testing
 
DDD with Behat
DDD with BehatDDD with Behat
DDD with Behat
 
What is dev ops?
What is dev ops?What is dev ops?
What is dev ops?
 
IoT Development from Prototype to Production
IoT Development from Prototype to ProductionIoT Development from Prototype to Production
IoT Development from Prototype to Production
 

More from Mutual Mobile

CocoaConf Austin 2014 | Demystifying Security Best Practices
CocoaConf Austin 2014 | Demystifying Security Best PracticesCocoaConf Austin 2014 | Demystifying Security Best Practices
CocoaConf Austin 2014 | Demystifying Security Best Practices
Mutual Mobile
 
SXSW 2014 | How Mobile Is Changing The Research Universe
SXSW 2014 | How Mobile Is Changing The Research UniverseSXSW 2014 | How Mobile Is Changing The Research Universe
SXSW 2014 | How Mobile Is Changing The Research Universe
Mutual Mobile
 
SXSW 2014 | You Can Use Glass For Good Or...
SXSW 2014 | You Can Use Glass For Good Or...SXSW 2014 | You Can Use Glass For Good Or...
SXSW 2014 | You Can Use Glass For Good Or...
Mutual Mobile
 
SXSW 2014 | Wearable Tech: Game Changer for People with Disabilities?
SXSW 2014 | Wearable Tech: Game Changer for People with Disabilities?SXSW 2014 | Wearable Tech: Game Changer for People with Disabilities?
SXSW 2014 | Wearable Tech: Game Changer for People with Disabilities?
Mutual Mobile
 
2014 Predictions: What's in the cards for mobile?
2014 Predictions: What's in the cards for mobile?2014 Predictions: What's in the cards for mobile?
2014 Predictions: What's in the cards for mobile?
Mutual Mobile
 
Hacking Wearable Tech
Hacking Wearable TechHacking Wearable Tech
Hacking Wearable Tech
Mutual Mobile
 
Classroom of the Future: Mobile in Education
Classroom of the Future: Mobile in EducationClassroom of the Future: Mobile in Education
Classroom of the Future: Mobile in Education
Mutual Mobile
 
Unboxing iOS 7
Unboxing iOS 7Unboxing iOS 7
Unboxing iOS 7
Mutual Mobile
 
Lean Mobile Strategy
Lean Mobile StrategyLean Mobile Strategy
Lean Mobile StrategyMutual Mobile
 
What Brands Need to Know About iOS 7
What Brands Need to Know About iOS 7What Brands Need to Know About iOS 7
What Brands Need to Know About iOS 7Mutual Mobile
 
7 Design Tips for the New Android Experience
7 Design Tips for the New Android Experience7 Design Tips for the New Android Experience
7 Design Tips for the New Android Experience
Mutual Mobile
 
Let's Talk Android
Let's Talk AndroidLet's Talk Android
Let's Talk Android
Mutual Mobile
 
3 Ways Mobile Sales Enablement Solves Sales Problems
3 Ways Mobile Sales Enablement Solves Sales Problems3 Ways Mobile Sales Enablement Solves Sales Problems
3 Ways Mobile Sales Enablement Solves Sales Problems
Mutual Mobile
 
Designing the New Android Experience - The Golden Age of Android
Designing the New Android Experience - The Golden Age of AndroidDesigning the New Android Experience - The Golden Age of Android
Designing the New Android Experience - The Golden Age of Android
Mutual Mobile
 
SXSW Dribbble Meetup Photos
SXSW Dribbble Meetup PhotosSXSW Dribbble Meetup Photos
SXSW Dribbble Meetup Photos
Mutual Mobile
 
iPad: Past, Present, and Future
iPad: Past, Present, and FutureiPad: Past, Present, and Future
iPad: Past, Present, and Future
Mutual Mobile
 
Selecting a Front-End Mobile Solution
Selecting a Front-End Mobile SolutionSelecting a Front-End Mobile Solution
Selecting a Front-End Mobile Solution
Mutual Mobile
 
Honeycomb Design For Developers
Honeycomb Design For DevelopersHoneycomb Design For Developers
Honeycomb Design For Developers
Mutual Mobile
 
Android Design Guidelines 1.1
Android Design Guidelines 1.1Android Design Guidelines 1.1
Android Design Guidelines 1.1
Mutual Mobile
 

More from Mutual Mobile (20)

CocoaConf Austin 2014 | Demystifying Security Best Practices
CocoaConf Austin 2014 | Demystifying Security Best PracticesCocoaConf Austin 2014 | Demystifying Security Best Practices
CocoaConf Austin 2014 | Demystifying Security Best Practices
 
SXSW 2014 | How Mobile Is Changing The Research Universe
SXSW 2014 | How Mobile Is Changing The Research UniverseSXSW 2014 | How Mobile Is Changing The Research Universe
SXSW 2014 | How Mobile Is Changing The Research Universe
 
SXSW 2014 | You Can Use Glass For Good Or...
SXSW 2014 | You Can Use Glass For Good Or...SXSW 2014 | You Can Use Glass For Good Or...
SXSW 2014 | You Can Use Glass For Good Or...
 
SXSW 2014 | Wearable Tech: Game Changer for People with Disabilities?
SXSW 2014 | Wearable Tech: Game Changer for People with Disabilities?SXSW 2014 | Wearable Tech: Game Changer for People with Disabilities?
SXSW 2014 | Wearable Tech: Game Changer for People with Disabilities?
 
2014 Predictions: What's in the cards for mobile?
2014 Predictions: What's in the cards for mobile?2014 Predictions: What's in the cards for mobile?
2014 Predictions: What's in the cards for mobile?
 
Hacking Wearable Tech
Hacking Wearable TechHacking Wearable Tech
Hacking Wearable Tech
 
Classroom of the Future: Mobile in Education
Classroom of the Future: Mobile in EducationClassroom of the Future: Mobile in Education
Classroom of the Future: Mobile in Education
 
Unboxing iOS 7
Unboxing iOS 7Unboxing iOS 7
Unboxing iOS 7
 
Lean Mobile Strategy
Lean Mobile StrategyLean Mobile Strategy
Lean Mobile Strategy
 
What Brands Need to Know About iOS 7
What Brands Need to Know About iOS 7What Brands Need to Know About iOS 7
What Brands Need to Know About iOS 7
 
7 Design Tips for the New Android Experience
7 Design Tips for the New Android Experience7 Design Tips for the New Android Experience
7 Design Tips for the New Android Experience
 
Let's Talk Android
Let's Talk AndroidLet's Talk Android
Let's Talk Android
 
3 Ways Mobile Sales Enablement Solves Sales Problems
3 Ways Mobile Sales Enablement Solves Sales Problems3 Ways Mobile Sales Enablement Solves Sales Problems
3 Ways Mobile Sales Enablement Solves Sales Problems
 
Designing the New Android Experience - The Golden Age of Android
Designing the New Android Experience - The Golden Age of AndroidDesigning the New Android Experience - The Golden Age of Android
Designing the New Android Experience - The Golden Age of Android
 
Hackathon
HackathonHackathon
Hackathon
 
SXSW Dribbble Meetup Photos
SXSW Dribbble Meetup PhotosSXSW Dribbble Meetup Photos
SXSW Dribbble Meetup Photos
 
iPad: Past, Present, and Future
iPad: Past, Present, and FutureiPad: Past, Present, and Future
iPad: Past, Present, and Future
 
Selecting a Front-End Mobile Solution
Selecting a Front-End Mobile SolutionSelecting a Front-End Mobile Solution
Selecting a Front-End Mobile Solution
 
Honeycomb Design For Developers
Honeycomb Design For DevelopersHoneycomb Design For Developers
Honeycomb Design For Developers
 
Android Design Guidelines 1.1
Android Design Guidelines 1.1Android Design Guidelines 1.1
Android Design Guidelines 1.1
 

Recently uploaded

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 

Recently uploaded (20)

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 

Android Frameworks: Highlighting the Need for a Solid Development Framework 

  • 1. Android Frameworks Highlighting the need for a solid development framework
  • 2. A little about me... ● ● ● ● In the industry since 2002. Started at Mutual Mobile in 2011. Last hair cut 2011. During which I’ve released 7 apps.
  • 3. What is a framework ● Starting from scratch is unsustainable. ● A framework is a common code base that is reusable in multiple contexts ● Basically its just an Android project ready to be copied ● This is possible because most app share common basic tasks
  • 4. Technical benefits ● All libraries are bootstrapped and ready to play ● Prevents reinventing the wheel ● Common build system interface
  • 5. Organizational benefits ● Allows all team members a common ground for communication ● Allows for cross team problem solving ● Allows for easy onboarding ● Unifies non collocated teams ● Measure team member success
  • 6. Components of a Framework
  • 7. Component: REST Consumption Most app currently leverage REST. As such this is one of your most important decisions. ● Existing Libraries ○ ○ ○ ○ ○ HttpUrlConnection ApacheHTTPClient Volley Retrofit okhttp
  • 8. Component: Object Serialization While ReST services are great at returning strings, POJO’s are better. ● Existing Libraries ○ ○ ○ ○ Gson Jackson Simple Protobuf
  • 9. Component: Caching As mobile matures so do the users. Redundant REST requests won’t cut it any more. ● Existing Libraries ○ Volley ○ okhttp ○ DiskLruCache
  • 10. Component: Local Database Invariably the app will need to keep state. Your devs will need a place to keep it. ● Existing Libraries ○ ○ ○ ○ ○ Shared Preferences Sqlite Ormlite GreenDAO DB4O
  • 11. Component: In App Communication Communicating is hard, even more so if you have Asynctasks, Services and, Fragments in the mix. ● Existing Libraries ○ Android intent system ○ Otto ○ Eventbus
  • 12. Component: Automated Testing Well done. Here are the test results: You are a horrible person. I'm serious, that's what it says: "A horrible person." We weren't even testing for that. -- GLaDOS / Portal 2 ● Testing Options and Support Libraries ○ Android Test Projects ○ JUnit ○ Robolectric ○ Mockito ○ Robotium ○ uiautomator
  • 13. Component: Build system & CI Autonomous build creation is a wonderful thing and gives you moment to moment status of your projects. ● Existing Options ○ ANT build process ○ Maven (kinda...) ○ Gradle build process
  • 14. Additional Considerations This is not an exhaustive list keep your eyes open for other things as well. ● ● ● ● Logging Crash reporting Code Metrics Image loading
  • 15. Component: Glue Even with the best libraries selected a successful framework needs to be pulled together.
  • 16. Mutual Mobile’s Framework Praxis: the process by which a theory, lesson, or skill is realized. ● Libraries Used ○ ○ ○ ○ ○ ○ ○ ApacheHTTPClient Gson / Simple DB4O Otto JUnit / Robotium ANT Dagger
  • 17. Care and feeding of your framework ● Frameworks only last so long. ● Some of the libraries listed haven’t had their first birthday yet. ● Keep looking for new ways to improve and adapt.
  • 18. Keeping up with the times ● Some examples from Mutual Mobile’s framework ○ On 2.2 we used a segmented controller but, after ICS we changed to Android’s Actionbar. ○ We used singletons and static members to keep system state, now we use our DI framework to moderate standard POJOs, holding state ○ We used Handlers to communicate AsyncTask results, now we ride the bus.