SlideShare a Scribd company logo
  Copyright © 2013 CommonsWare, LLC
Android
Development...
The 20,000-Foot
View
  Copyright © 2013 CommonsWare, LLC
Welcome to Android!
● Traditional Development Model
– Java, XML, and other good stuff
● Alternative Development Models
– Other languages
– Native development
– HTML5 and hybrid apps
– Games
– Other cross-platform options
  Copyright © 2013 CommonsWare, LLC
Basket of Components
● Activity
– Primary unit of user interface
– Think: screen, page, window
– “User transaction”
  Copyright © 2013 CommonsWare, LLC
Basket of Components
● Service
– Long-running task (download)
– User-controlled background task (music player)
– “Cron job” (check for unread email)
– Integration point (third-party API)
  Copyright © 2013 CommonsWare, LLC
Basket of Components
● Broadcast Receiver
– System events (battery low)
– Application messages
● Content Provider
– Integration point (expose database)
– Abstraction layer (hide database internally)
  Copyright © 2013 CommonsWare, LLC
Activities, Fragments, & Widgets
● Activities HostWidgets
– Widget = micro unit of UI
– Organized via layout managers
– Described using XML
● Activity as a whole
● Portions of an activity (rows in a selection list)
  Copyright © 2013 CommonsWare, LLC
Activities, Fragments, & Widgets
● Fragments ManageWidgets
– Reuse for multiple screen sizes
– Reuse for multiple instances
● Horizontal swiping strategies
  Copyright © 2013 CommonsWare, LLC
Activities, Fragments, & Widgets
● Multiple Layout Flavors
– Portrait versus landscape
– Normal versus large
– Touchscreen versus pointer (trackball)
● Flow =Web-Like
– Click to launch new activities
– BACK button
– HOME button
  Copyright © 2013 CommonsWare, LLC
Java and Dalvik
● WhatYouWrite
– Java
– XML
– C/C++ (optional)
  Copyright © 2013 CommonsWare, LLC
Java and Dalvik
● What Android Runs: Dalvik
– Virtual machine, like Perl or Java
– Build tools translate your Java code to Dalvik
bytecode
– Usually invisible to you
  Copyright © 2013 CommonsWare, LLC
Resources
● Non-Java Application Assets
– Layouts
– Images (PNG, JPEG, etc.)
– Audio clips
– Strings
– Animations
– Menus
– Etc.
  Copyright © 2013 CommonsWare, LLC
Resources
● Resource Sets
– Language
– Screen density
– Screen size
– Dozens of other criteria
  Copyright © 2013 CommonsWare, LLC
Tools
● Eclipse...
– Android DeveloperTools plugin
– GUI preview mode
  Copyright © 2013 CommonsWare, LLC
Tools
● ...or Android Studio...
– New IDE, based on IntelliJ IDEA, under
development at Google
– “Early access preview” available today
● Broken enough that is mostly for seasoned Android
developers
– Should be the long-term focus
  Copyright © 2013 CommonsWare, LLC
Tools
● ...Or Not
– IntelliJ IDEA
– NetBeans
– No particular IDE
● Platforms
– Linux
– OS X
– Windows
  Copyright © 2013 CommonsWare, LLC
Demo: Hello,
World
  Copyright © 2013 CommonsWare, LLC
Intents and Integration
● Intents as Message Bus
– Start an activity
– Start a service
– Send a broadcast
  Copyright © 2013 CommonsWare, LLC
Intents and Integration
● Use Intents Internally
– Start your own activities
– Start your own services
– Send your own “narrowcasts”
● Service activity or notification→
– Send your own “broadcasts” to third parties
  Copyright © 2013 CommonsWare, LLC
Intents and Integration
● Use Intents Externally
– Send a message with the user's choice of “send”
application (email? SMS?Twitter? Facebook?)
– Offer to view a certain MIME type
– Launch an OS-supplied activity (map)
– Launch a third-party activity
– Implement a plug-in system
  Copyright © 2013 CommonsWare, LLC
The Manifest
● AndroidManifest.xml, in project root
● Table of contents
● Additional metadata
– App and OS versions
– Requested and required permissions
– Supported screen sizes
  Copyright © 2013 CommonsWare, LLC
Notable OS Features
● Data Stores
– SQLite: relational database engine, in-process
– Files
● Internal: not accessible by user
● External: accessible by user via mounting device
– Shared Preferences
● Mostly for user settings
● GUI framework for collecting these
  Copyright © 2013 CommonsWare, LLC
Notable OS Features
● Notifications
– Put icon in status bar (phones) or system bar
(tablets) or elsewhere (TVs)
– Optional hardware alerts
● Ringtone, vibration, etc.
– Designed to let user know of work being done in
the background
  Copyright © 2013 CommonsWare, LLC
Notable OS Features
● Multimedia
– Audio, video
● Decent but not infinite roster of formats/codecs
● Some codecs are commercial, may not always be
present
– Recording, playback
– Local, streaming
  Copyright © 2013 CommonsWare, LLC
Notable OS Features
● Locations
– GPS
– WiFi hotspot proximity
– Cell tower triangulation
● Maps
– Google Maps
– Third-party mapping engines
  Copyright © 2013 CommonsWare, LLC
Notable OS Features
● Sensors
– Accelerometer
– Gyroscope
– Orientation
– Ambient Light
– Barometric Pressure
– Etc.
  Copyright © 2013 CommonsWare, LLC
Notable OS Features
● Other Hardware
– Telephony
– WiFi
– Bluetooth
– NFC
– Cameras
– USB
  Copyright © 2013 CommonsWare, LLC
Production
● APK File
– Android “executable”
– Digitally signed (self-signed certificate)
– Freely distributable
● Not limited to Android Market or any other single
venue
  Copyright © 2013 CommonsWare, LLC
Production
● Play Store
– $25 setup fee
– Upload and go
● Available on many devices within hours of release
● Other Markets Available
– Example: Amazon Appstore for Android
● Self-Distribution
  Copyright © 2013 CommonsWare, LLC
But, What If I
Hate Java?
  Copyright © 2013 CommonsWare, LLC
Varying Definitions of ”Native”
● Native = C/C++
– In comparison to Java
● Native = Java
– In comparison to HTML5 and hybrid apps
  Copyright © 2013 CommonsWare, LLC
Native C/C++ Development
● Native Development Kit (NDK)
– Allows you to write C/C++ libraries, link into your
Android app
● Pros
– Speed
– Possible reuse across platforms
  Copyright © 2013 CommonsWare, LLC
Native C/C++ Development
● Cons
– CPU architectures (x86 vs. ARM vs. MIPS)
– May not like C/C++ any more than Java
● Pattern #1: Extension Library
– Migrate select algorithms into native code
– Examples: image processing, signal processing,
game AI
  Copyright © 2013 CommonsWare, LLC
Native C/C++ Development
● Pattern #2: Complete App
– Eschew all trappings of traditional apps
– Mostly for OpenGL/OpenSL games
  Copyright © 2013 CommonsWare, LLC
HTML5 Web Apps
● TraditionalWeb development, writ small
● Key: Cache Manifest
– Designate files that should be cached, beyond
standard ephemeral cache
– Objective: Allow app to be run offline
● Other Facets of HTML5 Specification
– Storage,WebSockets, video, camera, location
tracking, etc.
  Copyright © 2013 CommonsWare, LLC
HTML5 Web Apps
● Pros
– May already haveWeb development talent
– Cross-platform
● Cons
– Need touch-aware coding/libraries
– Discoverability an issue
● Play Store does not listWeb apps
● Amazon Appstore for Android does
  Copyright © 2013 CommonsWare, LLC
Hybrid Apps
● HTML5 UI on a (Java) Native Foundation
– Package up HTML/CSS/JS/images into APK
– Gives you access to APIs beyond HTML5 specs
● Most Popular: PhoneGap
– Adobe product, based on Apache Cordova
– Cross-platform
– Optional hosted build service
  Copyright © 2013 CommonsWare, LLC
Hybrid Apps
● Pros
– Closer to native apps for distribution and
capability
● Cons
– Not a native UI
● Big or small problem depending upon audience
– Cannot do everything that a native app can
  Copyright © 2013 CommonsWare, LLC
Game Engines
● Android-Specific
– AndEngine, Box2D
● Cross-Platform
– Unity 3D, Cocos 2D, Corona, Havok, libGDX,
Proton
● Dozens of others
  Copyright © 2013 CommonsWare, LLC
Other Cross-Platform Options
● Titanium Mobile
– Develop in JavaScript, but manipulating native
widgets (not HTML)
● Adobe AIR
– Well, OK, sorta cross-platform...
● Xamarin
– .NET for Android (MonoDroid)
  Copyright © 2013 CommonsWare, LLC
Other Cross-Platform Options
● Sencha
– Offers own PhoneGap-style hybrid engine for
use with SenchaTouch-based apps
● MoSync
– Another take on hybrid app engine
● Rhodes
– Web apps, but with Ruby “server”
  Copyright © 2013 CommonsWare, LLC
App Inventor
● Drag-and-Drop
– UI
– Code via pluggable “blocks”
● Originally created by Google educational unit
● Contributed to MIT Media Lab, open source
● Apps not really suited for distribution
  Copyright © 2013 CommonsWare, LLC
App Generators
● Canned “Fill-in-the-Blanks” Apps
– You provide details, it generates custom app on
a server for you to download and distribute
● Focuses
– Specific verticals (e.g., restaurants) via
vertical-specific templates
– General “oh, we should have an app” firms
  Copyright © 2013 CommonsWare, LLC
OK, So How
Do I Choose?
  Copyright © 2013 CommonsWare, LLC
Who IsThe User?
● Public Distribution?
– UI/UX is fairly important for acceptance, good
reviews
– Should look like other apps of its ilk
● Internal Distribution?
– Long history of crap
– Look-and-feel issues tend to be lower concern
  Copyright © 2013 CommonsWare, LLC
What Does the User Use?
● Supplied Device?
– If so, and if Android, all options on the table
● BYOD?
– AndroidToday (think multi-native
implementation)
– AndroidTomorrow (think cross-platform)
– Android Forever (gain deep experience in one
area)
  Copyright © 2013 CommonsWare, LLC
What DoYou Need?
● More Device-Centric, More Native
– Contacts?
– Camera?
– Background data syncing?
– Notifications?
● Simpler Requirements = More Flexibility in
Development Choice
  Copyright © 2013 CommonsWare, LLC
What DoYou Know?
● All Else Equal, Pick a Gentle Learning Curve
– Unless learning is the objective...
– ...and all else may not be equal
● Benefits to Existing Experience
– Level of effort = time/expense budget
– Deadlines

More Related Content

PDF
Android Development...The 20,000-Foot View
PDF
Sundar_v5.9_Proj_Summary
PPTX
Multimedia authoring and methaphors
PDF
Getting Android Developers for Your Wearables
PDF
When Microwatts Are Precious: Battery Tips for Wearable Apps
PDF
Google TV For Fun
PPTX
Smartphone Behavior On A Featurephone Budget
PDF
Second-Screen Support in Android 4.2
Android Development...The 20,000-Foot View
Sundar_v5.9_Proj_Summary
Multimedia authoring and methaphors
Getting Android Developers for Your Wearables
When Microwatts Are Precious: Battery Tips for Wearable Apps
Google TV For Fun
Smartphone Behavior On A Featurephone Budget
Second-Screen Support in Android 4.2

What's hot (11)

PDF
Secondary Screen Support Using DisplayManager
PDF
[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...
PDF
Using the Presentation API and external screens on Android
PDF
Droidcon2013 miracast final2
PDF
Integration of OSGi and User Friendly UI Application - Akira Moriguchi
PDF
Jure Sustersic Monetization through Ovi Services
PPTX
Chapter 7
PPT
Software (fundamentals)
PDF
Part one
PPT
Multimedia
Secondary Screen Support Using DisplayManager
[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...
Using the Presentation API and external screens on Android
Droidcon2013 miracast final2
Integration of OSGi and User Friendly UI Application - Akira Moriguchi
Jure Sustersic Monetization through Ovi Services
Chapter 7
Software (fundamentals)
Part one
Multimedia
Ad

Viewers also liked (9)

PDF
人人能編程是可能的嗎?
PDF
Taipei gtug opening
PDF
Firefox os how large open source project works
PDF
Google IO 2011 recap
PDF
Steps to contribute to firefox os (gaia)
PPTX
How to create 360 Image/panorama & share with WebVR?
PDF
Firefox OS overview
PDF
Android + jenkins
PDF
Blocklyduino Poster
人人能編程是可能的嗎?
Taipei gtug opening
Firefox os how large open source project works
Google IO 2011 recap
Steps to contribute to firefox os (gaia)
How to create 360 Image/panorama & share with WebVR?
Firefox OS overview
Android + jenkins
Blocklyduino Poster
Ad

Similar to Android Development: The 20,000-Foot View (20)

PPT
Google android os
PDF
Android : How Do I Code Thee?
PPTX
Basic of Android App Development
PPTX
Intro to Android for the iOS Fan
PPT
Android Anatomy
PPT
Android Application Development Using Java
PPTX
Introduction to Mobile Development
PDF
Begining Android Development
PPTX
Introduction to Android (before 2015)
PPTX
Android quick talk
PPTX
Android Development Workshop
PDF
Slides bootcamp21
PPTX
Introduction to android
PPT
My androidpresentation
PPT
Android overview
PDF
Android from A to Z
PDF
Android : Evolution or Revolution
PDF
Android from A to Z
PDF
Android application development
PDF
Introduction to android
Google android os
Android : How Do I Code Thee?
Basic of Android App Development
Intro to Android for the iOS Fan
Android Anatomy
Android Application Development Using Java
Introduction to Mobile Development
Begining Android Development
Introduction to Android (before 2015)
Android quick talk
Android Development Workshop
Slides bootcamp21
Introduction to android
My androidpresentation
Android overview
Android from A to Z
Android : Evolution or Revolution
Android from A to Z
Android application development
Introduction to android

More from CommonsWare (20)

PDF
Gradle and Your Android Wearable Projects
PDF
The Action Bar: Front to Back
PDF
Android Security: Defending Your Users
PDF
Mastering the Master Detail Pattern
PDF
Not Quite As Painful Threading
PDF
Maps V2... And You!
PDF
A Deep Dive Into ViewPager
PDF
Integrate Android Apps and Web Apps
PDF
From Android to the Mobile Web
PDF
X Means Y
PDF
The Wonderful World of Wearables
PDF
Securing User Data with SQLCipher
PDF
Beaming Data to Devices with NFC
PDF
What's New in Jelly Bean
PDF
Making Money at Mobile: 60 Business Models
PDF
AppsWorld Keynote
PDF
App Integration (Revised and Updated)
PDF
Rich Text Editing and Beyond
PDF
App integration: Strategies and Tactics
PDF
Backwards Compatibility: Strategies and Tactics
Gradle and Your Android Wearable Projects
The Action Bar: Front to Back
Android Security: Defending Your Users
Mastering the Master Detail Pattern
Not Quite As Painful Threading
Maps V2... And You!
A Deep Dive Into ViewPager
Integrate Android Apps and Web Apps
From Android to the Mobile Web
X Means Y
The Wonderful World of Wearables
Securing User Data with SQLCipher
Beaming Data to Devices with NFC
What's New in Jelly Bean
Making Money at Mobile: 60 Business Models
AppsWorld Keynote
App Integration (Revised and Updated)
Rich Text Editing and Beyond
App integration: Strategies and Tactics
Backwards Compatibility: Strategies and Tactics

Recently uploaded (20)

DOCX
How FIFA 2026 Is Changing Vancouver Before Kickoff.docx
PPTX
sports performance data analysics for sports
PPTX
International Football (International football is a type of soccer in which n...
DOCX
NFL Dublin Labriola on Steelers’ Victory Over the Jaguars.docx
DOCX
NFL Dublin Who Will Rise as Super Bowl 60 Champs.docx
PDF
BOOK MUAYTHAI THAI FIGHT ALEXANDRE BRECK
PDF
Best All-Access Digital Pass me .... pdf
PPTX
Best All-Access Digital Pass me .pptxxxx
DOCX
NFL Dublin Addison Returns Home To Haunt Pittsburgh.docx
PDF
volleyball lesson.powerpoint presentation
DOCX
NFL Dublin Will Howard’s Preseason Be Over After Hand Injury.docx
PDF
Download GTA 5 For PC (Windows 7, 10, 11)
PPTX
Performance Analytics in the field of sports.pptx
DOCX
North Texas announced as base camps for 2026 FIFA World Cup.docx
PDF
FIFA World Cup Scaloni Hopeful for Messi’s FIFA World Cup 2026 Participation.pdf
DOCX
FIFA World Cup 2026 Run-Up Just 10 Months Until Kickoff.docx
PPTX
BADMINTON-2ND-WEEK-FUNDAMENTAL-SKILLS.pptx
DOCX
FIFA World Cup Semi Final: Lionel Messi one win from crowning glory after Arg...
DOCX
NFL Dublin Injury Ends Season for Former Vikings Standout.docx
DOCX
FIFA World Cup Semi Final The Battle for Global Supremacy.docx
How FIFA 2026 Is Changing Vancouver Before Kickoff.docx
sports performance data analysics for sports
International Football (International football is a type of soccer in which n...
NFL Dublin Labriola on Steelers’ Victory Over the Jaguars.docx
NFL Dublin Who Will Rise as Super Bowl 60 Champs.docx
BOOK MUAYTHAI THAI FIGHT ALEXANDRE BRECK
Best All-Access Digital Pass me .... pdf
Best All-Access Digital Pass me .pptxxxx
NFL Dublin Addison Returns Home To Haunt Pittsburgh.docx
volleyball lesson.powerpoint presentation
NFL Dublin Will Howard’s Preseason Be Over After Hand Injury.docx
Download GTA 5 For PC (Windows 7, 10, 11)
Performance Analytics in the field of sports.pptx
North Texas announced as base camps for 2026 FIFA World Cup.docx
FIFA World Cup Scaloni Hopeful for Messi’s FIFA World Cup 2026 Participation.pdf
FIFA World Cup 2026 Run-Up Just 10 Months Until Kickoff.docx
BADMINTON-2ND-WEEK-FUNDAMENTAL-SKILLS.pptx
FIFA World Cup Semi Final: Lionel Messi one win from crowning glory after Arg...
NFL Dublin Injury Ends Season for Former Vikings Standout.docx
FIFA World Cup Semi Final The Battle for Global Supremacy.docx

Android Development: The 20,000-Foot View

  • 1.   Copyright © 2013 CommonsWare, LLC Android Development... The 20,000-Foot View
  • 2.   Copyright © 2013 CommonsWare, LLC Welcome to Android! ● Traditional Development Model – Java, XML, and other good stuff ● Alternative Development Models – Other languages – Native development – HTML5 and hybrid apps – Games – Other cross-platform options
  • 3.   Copyright © 2013 CommonsWare, LLC Basket of Components ● Activity – Primary unit of user interface – Think: screen, page, window – “User transaction”
  • 4.   Copyright © 2013 CommonsWare, LLC Basket of Components ● Service – Long-running task (download) – User-controlled background task (music player) – “Cron job” (check for unread email) – Integration point (third-party API)
  • 5.   Copyright © 2013 CommonsWare, LLC Basket of Components ● Broadcast Receiver – System events (battery low) – Application messages ● Content Provider – Integration point (expose database) – Abstraction layer (hide database internally)
  • 6.   Copyright © 2013 CommonsWare, LLC Activities, Fragments, & Widgets ● Activities HostWidgets – Widget = micro unit of UI – Organized via layout managers – Described using XML ● Activity as a whole ● Portions of an activity (rows in a selection list)
  • 7.   Copyright © 2013 CommonsWare, LLC Activities, Fragments, & Widgets ● Fragments ManageWidgets – Reuse for multiple screen sizes – Reuse for multiple instances ● Horizontal swiping strategies
  • 8.   Copyright © 2013 CommonsWare, LLC Activities, Fragments, & Widgets ● Multiple Layout Flavors – Portrait versus landscape – Normal versus large – Touchscreen versus pointer (trackball) ● Flow =Web-Like – Click to launch new activities – BACK button – HOME button
  • 9.   Copyright © 2013 CommonsWare, LLC Java and Dalvik ● WhatYouWrite – Java – XML – C/C++ (optional)
  • 10.   Copyright © 2013 CommonsWare, LLC Java and Dalvik ● What Android Runs: Dalvik – Virtual machine, like Perl or Java – Build tools translate your Java code to Dalvik bytecode – Usually invisible to you
  • 11.   Copyright © 2013 CommonsWare, LLC Resources ● Non-Java Application Assets – Layouts – Images (PNG, JPEG, etc.) – Audio clips – Strings – Animations – Menus – Etc.
  • 12.   Copyright © 2013 CommonsWare, LLC Resources ● Resource Sets – Language – Screen density – Screen size – Dozens of other criteria
  • 13.   Copyright © 2013 CommonsWare, LLC Tools ● Eclipse... – Android DeveloperTools plugin – GUI preview mode
  • 14.   Copyright © 2013 CommonsWare, LLC Tools ● ...or Android Studio... – New IDE, based on IntelliJ IDEA, under development at Google – “Early access preview” available today ● Broken enough that is mostly for seasoned Android developers – Should be the long-term focus
  • 15.   Copyright © 2013 CommonsWare, LLC Tools ● ...Or Not – IntelliJ IDEA – NetBeans – No particular IDE ● Platforms – Linux – OS X – Windows
  • 16.   Copyright © 2013 CommonsWare, LLC Demo: Hello, World
  • 17.   Copyright © 2013 CommonsWare, LLC Intents and Integration ● Intents as Message Bus – Start an activity – Start a service – Send a broadcast
  • 18.   Copyright © 2013 CommonsWare, LLC Intents and Integration ● Use Intents Internally – Start your own activities – Start your own services – Send your own “narrowcasts” ● Service activity or notification→ – Send your own “broadcasts” to third parties
  • 19.   Copyright © 2013 CommonsWare, LLC Intents and Integration ● Use Intents Externally – Send a message with the user's choice of “send” application (email? SMS?Twitter? Facebook?) – Offer to view a certain MIME type – Launch an OS-supplied activity (map) – Launch a third-party activity – Implement a plug-in system
  • 20.   Copyright © 2013 CommonsWare, LLC The Manifest ● AndroidManifest.xml, in project root ● Table of contents ● Additional metadata – App and OS versions – Requested and required permissions – Supported screen sizes
  • 21.   Copyright © 2013 CommonsWare, LLC Notable OS Features ● Data Stores – SQLite: relational database engine, in-process – Files ● Internal: not accessible by user ● External: accessible by user via mounting device – Shared Preferences ● Mostly for user settings ● GUI framework for collecting these
  • 22.   Copyright © 2013 CommonsWare, LLC Notable OS Features ● Notifications – Put icon in status bar (phones) or system bar (tablets) or elsewhere (TVs) – Optional hardware alerts ● Ringtone, vibration, etc. – Designed to let user know of work being done in the background
  • 23.   Copyright © 2013 CommonsWare, LLC Notable OS Features ● Multimedia – Audio, video ● Decent but not infinite roster of formats/codecs ● Some codecs are commercial, may not always be present – Recording, playback – Local, streaming
  • 24.   Copyright © 2013 CommonsWare, LLC Notable OS Features ● Locations – GPS – WiFi hotspot proximity – Cell tower triangulation ● Maps – Google Maps – Third-party mapping engines
  • 25.   Copyright © 2013 CommonsWare, LLC Notable OS Features ● Sensors – Accelerometer – Gyroscope – Orientation – Ambient Light – Barometric Pressure – Etc.
  • 26.   Copyright © 2013 CommonsWare, LLC Notable OS Features ● Other Hardware – Telephony – WiFi – Bluetooth – NFC – Cameras – USB
  • 27.   Copyright © 2013 CommonsWare, LLC Production ● APK File – Android “executable” – Digitally signed (self-signed certificate) – Freely distributable ● Not limited to Android Market or any other single venue
  • 28.   Copyright © 2013 CommonsWare, LLC Production ● Play Store – $25 setup fee – Upload and go ● Available on many devices within hours of release ● Other Markets Available – Example: Amazon Appstore for Android ● Self-Distribution
  • 29.   Copyright © 2013 CommonsWare, LLC But, What If I Hate Java?
  • 30.   Copyright © 2013 CommonsWare, LLC Varying Definitions of ”Native” ● Native = C/C++ – In comparison to Java ● Native = Java – In comparison to HTML5 and hybrid apps
  • 31.   Copyright © 2013 CommonsWare, LLC Native C/C++ Development ● Native Development Kit (NDK) – Allows you to write C/C++ libraries, link into your Android app ● Pros – Speed – Possible reuse across platforms
  • 32.   Copyright © 2013 CommonsWare, LLC Native C/C++ Development ● Cons – CPU architectures (x86 vs. ARM vs. MIPS) – May not like C/C++ any more than Java ● Pattern #1: Extension Library – Migrate select algorithms into native code – Examples: image processing, signal processing, game AI
  • 33.   Copyright © 2013 CommonsWare, LLC Native C/C++ Development ● Pattern #2: Complete App – Eschew all trappings of traditional apps – Mostly for OpenGL/OpenSL games
  • 34.   Copyright © 2013 CommonsWare, LLC HTML5 Web Apps ● TraditionalWeb development, writ small ● Key: Cache Manifest – Designate files that should be cached, beyond standard ephemeral cache – Objective: Allow app to be run offline ● Other Facets of HTML5 Specification – Storage,WebSockets, video, camera, location tracking, etc.
  • 35.   Copyright © 2013 CommonsWare, LLC HTML5 Web Apps ● Pros – May already haveWeb development talent – Cross-platform ● Cons – Need touch-aware coding/libraries – Discoverability an issue ● Play Store does not listWeb apps ● Amazon Appstore for Android does
  • 36.   Copyright © 2013 CommonsWare, LLC Hybrid Apps ● HTML5 UI on a (Java) Native Foundation – Package up HTML/CSS/JS/images into APK – Gives you access to APIs beyond HTML5 specs ● Most Popular: PhoneGap – Adobe product, based on Apache Cordova – Cross-platform – Optional hosted build service
  • 37.   Copyright © 2013 CommonsWare, LLC Hybrid Apps ● Pros – Closer to native apps for distribution and capability ● Cons – Not a native UI ● Big or small problem depending upon audience – Cannot do everything that a native app can
  • 38.   Copyright © 2013 CommonsWare, LLC Game Engines ● Android-Specific – AndEngine, Box2D ● Cross-Platform – Unity 3D, Cocos 2D, Corona, Havok, libGDX, Proton ● Dozens of others
  • 39.   Copyright © 2013 CommonsWare, LLC Other Cross-Platform Options ● Titanium Mobile – Develop in JavaScript, but manipulating native widgets (not HTML) ● Adobe AIR – Well, OK, sorta cross-platform... ● Xamarin – .NET for Android (MonoDroid)
  • 40.   Copyright © 2013 CommonsWare, LLC Other Cross-Platform Options ● Sencha – Offers own PhoneGap-style hybrid engine for use with SenchaTouch-based apps ● MoSync – Another take on hybrid app engine ● Rhodes – Web apps, but with Ruby “server”
  • 41.   Copyright © 2013 CommonsWare, LLC App Inventor ● Drag-and-Drop – UI – Code via pluggable “blocks” ● Originally created by Google educational unit ● Contributed to MIT Media Lab, open source ● Apps not really suited for distribution
  • 42.   Copyright © 2013 CommonsWare, LLC App Generators ● Canned “Fill-in-the-Blanks” Apps – You provide details, it generates custom app on a server for you to download and distribute ● Focuses – Specific verticals (e.g., restaurants) via vertical-specific templates – General “oh, we should have an app” firms
  • 43.   Copyright © 2013 CommonsWare, LLC OK, So How Do I Choose?
  • 44.   Copyright © 2013 CommonsWare, LLC Who IsThe User? ● Public Distribution? – UI/UX is fairly important for acceptance, good reviews – Should look like other apps of its ilk ● Internal Distribution? – Long history of crap – Look-and-feel issues tend to be lower concern
  • 45.   Copyright © 2013 CommonsWare, LLC What Does the User Use? ● Supplied Device? – If so, and if Android, all options on the table ● BYOD? – AndroidToday (think multi-native implementation) – AndroidTomorrow (think cross-platform) – Android Forever (gain deep experience in one area)
  • 46.   Copyright © 2013 CommonsWare, LLC What DoYou Need? ● More Device-Centric, More Native – Contacts? – Camera? – Background data syncing? – Notifications? ● Simpler Requirements = More Flexibility in Development Choice
  • 47.   Copyright © 2013 CommonsWare, LLC What DoYou Know? ● All Else Equal, Pick a Gentle Learning Curve – Unless learning is the objective... – ...and all else may not be equal ● Benefits to Existing Experience – Level of effort = time/expense budget – Deadlines