SlideShare una empresa de Scribd logo
1 de 26
.NET? Mono for Android Does
Kevin McMahon
@klmcmahon
http://blog.kevfoo.com
Overview
• Overview of Android
• Mono for Android : What, How, Why
• Code Demo
• Mono for Android Resources
What is Android?
• Application Framework
• Dalvik Virtual Machine
• Optimized OpenGL ES 1.0 graphics library
• Customized Linux 2.6 kernel
• Rich development environment
Android Stack
Android Stack
Android Stack
Android Stack
Android Stack
Dalvik Virtual Machine
• Dalvik Virtual Machine
– Register-based
– Runs multiple VMs efficiently
– Requires a .class to .dex transformation
– JIT (as of Android 2.2)
• Each Android Application:
– Runs in their own process
– Runs on their own VM
What is Mono for Android?
• Commercial Product from Novell
– $399 individual / ~$999 enterprise / ~$99 student
• Windows and Mac OS X (Linux soon)
• Open preview
– DOWNLOAD AND TRY IT!
• Project is getting really close to 1.0
– No “Go Live” license yet
– Not done with optimizations
– Still changing the API
How Does it Work?
• Mono Runtime
– Native to the device
– Executes .Net code
– Runs side-by-side with Dalvik
• Mono to Android Communication
– Java proxies
• Android Callable Wrappers
• Managed Callable Wrappers
Mono for Android Architecture
Mono for Android Design Principles
• Follow the Framework Design Guidelines
• Allow developers to subclass any Java class
• C# delegates (lambdas, anonymous methods)
• Java properties as C# properties
• Strongly typed API
Why use Mono for Android?
• Mono for Android story not as compelling as
MonoTouch.
– GC, decent IDE, not Objective-C
• Opportunities for re-use across platforms
– iOS, Android, Windows Phone 7 non-UI components
– MonoGame which is a port of XNA
• Development tooling and environment
– Visual Studio
– MonoDevelop
• C# > Java
– Friction still due to Java idioms and architecture.
Deployment Options
• Deploy to Android Virtual Device
• Deploy to Device
• Debug capabilities on both
• Sell (eventually)
– Android Marketplace
– Amazon App Store
Android Application Concepts
• Activities
• Services
• Content Providers
• Intents
• Resources
Activities
• Orchestrates a UI view
• Applications are composed of 1-to-Many
activities
• One activity marked as main and shown first
upon launch
Activities - Views
• Each activity is given a default window to
draw in.
• Content of the window is provided by a
hierarchy of views
• A view hierarchy is placed within an activity's
window by the Activity.SetContentView()
Activity Life Cycle
• onCreate
• onStart
• onResume
• onPause
• onStop
• onDestroy
Services
• Android service are what you’d expect.
• Possible to bind to an ongoing service and
communicate via exposed interface
• Runs in main application process but doesn’t
block other components or UI
Content Providers
• Queryable application data stores
• Only way to share data amongst other apps
• Android ships with common providers
– Audio, video, images, contacts, etc.
• Making your application’s data public
– Create a new provider
– Add your data to existing provider
Content Provider Layer
Applications
Content Providers
Contacts Music Videos Pictures …
Intents
• Eventing mechanism
• Intent objects are passive data that is of interest
to the component that is receiving the intent
• Filterable
Resources
• Images, layout descriptions, binary blobs and
string dictionaries
• Abstraction layer which helps decouples code
• Makes managing assets easier
– Localization
– Multiple displays
– Different hardware configurations
Code Demo
https://github.com/kevinmcmahon/MonoDroid101
Mono for Android Resources
Download the Preview!
• http://mono-android.net/Welcome
Links
• http://www.mono-android.net
• http://developer.android.com/
IRC Support / Discussion
• #monodroid on irc.gnome.org
Code
• https://github.com/mono/monodroid-samples
• https://github.com/kevinmcmahon/MonoDroid101

Más contenido relacionado

La actualidad más candente

Aleksey_Demedetskiy_Jenkins
Aleksey_Demedetskiy_JenkinsAleksey_Demedetskiy_Jenkins
Aleksey_Demedetskiy_Jenkins
Ciklum
 

La actualidad más candente (20)

ACM Gazi Docker?
ACM Gazi Docker?ACM Gazi Docker?
ACM Gazi Docker?
 
Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016
 
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHEREECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
 
Tame your test environment with Docker Compose
Tame your test environment with Docker ComposeTame your test environment with Docker Compose
Tame your test environment with Docker Compose
 
Thoughts on building deployable and updatable share point solutions
Thoughts on building deployable and updatable share point solutionsThoughts on building deployable and updatable share point solutions
Thoughts on building deployable and updatable share point solutions
 
Building front-end apps that Scale - FOSDEM 2014
Building front-end apps that Scale - FOSDEM 2014Building front-end apps that Scale - FOSDEM 2014
Building front-end apps that Scale - FOSDEM 2014
 
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
 
08 mobile development
08   mobile development08   mobile development
08 mobile development
 
Developing Hybrid Applications with IONIC
Developing Hybrid Applications with IONICDeveloping Hybrid Applications with IONIC
Developing Hybrid Applications with IONIC
 
Don Wibier
Don WibierDon Wibier
Don Wibier
 
Unicom DevCon - CI/CD for Asp.net core apps using Docker
Unicom DevCon - CI/CD for Asp.net core apps using DockerUnicom DevCon - CI/CD for Asp.net core apps using Docker
Unicom DevCon - CI/CD for Asp.net core apps using Docker
 
Aleksey_Demedetskiy_Jenkins
Aleksey_Demedetskiy_JenkinsAleksey_Demedetskiy_Jenkins
Aleksey_Demedetskiy_Jenkins
 
Introduction to react native with redux
Introduction to react native with reduxIntroduction to react native with redux
Introduction to react native with redux
 
Android System Developement
Android System DevelopementAndroid System Developement
Android System Developement
 
ASP.NET MVC 5 and SignalR 2
ASP.NET MVC 5 and SignalR 2ASP.NET MVC 5 and SignalR 2
ASP.NET MVC 5 and SignalR 2
 
Configure an environnement for ASP.NET Core 2
Configure an environnement for ASP.NET Core 2Configure an environnement for ASP.NET Core 2
Configure an environnement for ASP.NET Core 2
 
Building Microservices with Jakarta EE and MicroProfile - EclipseCon 2019
Building Microservices with Jakarta EE and MicroProfile - EclipseCon 2019Building Microservices with Jakarta EE and MicroProfile - EclipseCon 2019
Building Microservices with Jakarta EE and MicroProfile - EclipseCon 2019
 
Experiences building apps with React Native @UtrechtJS May 2016
Experiences building apps with React Native @UtrechtJS May 2016Experiences building apps with React Native @UtrechtJS May 2016
Experiences building apps with React Native @UtrechtJS May 2016
 
An iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React NativeAn iOS Developer's Perspective on React Native
An iOS Developer's Perspective on React Native
 
Build 2017 - Whats new for Xamarin Devs
Build 2017 - Whats new for Xamarin DevsBuild 2017 - Whats new for Xamarin Devs
Build 2017 - Whats new for Xamarin Devs
 

Destacado

Games with Win 8 Style by Neneng
Games with Win 8 Style by NenengGames with Win 8 Style by Neneng
Games with Win 8 Style by Neneng
Agate Studio
 
Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!
Alfonso Garcia-Caro
 

Destacado (20)

Cross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpCross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharp
 
Xna and mono game
Xna and mono gameXna and mono game
Xna and mono game
 
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
 
CocosSharp_XHackNight_07feb
CocosSharp_XHackNight_07febCocosSharp_XHackNight_07feb
CocosSharp_XHackNight_07feb
 
Games with Win 8 Style by Neneng
Games with Win 8 Style by NenengGames with Win 8 Style by Neneng
Games with Win 8 Style by Neneng
 
Multyplatform and mono part 2 - Matteo Nicolotti
Multyplatform and mono part 2 - Matteo Nicolotti Multyplatform and mono part 2 - Matteo Nicolotti
Multyplatform and mono part 2 - Matteo Nicolotti
 
Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014
 
Flappy - Paris 2015
Flappy -  Paris 2015Flappy -  Paris 2015
Flappy - Paris 2015
 
Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!
 
EastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouchEastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouch
 
Introduction to CocosSharp
Introduction to CocosSharpIntroduction to CocosSharp
Introduction to CocosSharp
 
Gaming in Csharp
Gaming in CsharpGaming in Csharp
Gaming in Csharp
 
Generative Art Hands On with F#
Generative Art Hands On with F#Generative Art Hands On with F#
Generative Art Hands On with F#
 
Monogame and xna
Monogame and xnaMonogame and xna
Monogame and xna
 
Intro to Gaming- MonoGame/CocosSharp/UrhoSharp
Intro to Gaming- MonoGame/CocosSharp/UrhoSharpIntro to Gaming- MonoGame/CocosSharp/UrhoSharp
Intro to Gaming- MonoGame/CocosSharp/UrhoSharp
 
Tips & Tricks that every game developer should know
Tips & Tricks that every game developer should knowTips & Tricks that every game developer should know
Tips & Tricks that every game developer should know
 
Flappy bird game in c#
Flappy bird game in c#Flappy bird game in c#
Flappy bird game in c#
 
Ready, steady, cross platform games - ProgNet 2015
Ready, steady, cross platform games - ProgNet 2015Ready, steady, cross platform games - ProgNet 2015
Ready, steady, cross platform games - ProgNet 2015
 
Building a game in a day
Building a game in a dayBuilding a game in a day
Building a game in a day
 
Mobile F#un
Mobile F#unMobile F#un
Mobile F#un
 

Similar a .NET? MonoDroid Does

Introduction to android sessions new
Introduction to android   sessions newIntroduction to android   sessions new
Introduction to android sessions new
Joe Jacob
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016
Alex Wu
 
Android Architecture design programming with java
Android Architecture design programming with javaAndroid Architecture design programming with java
Android Architecture design programming with java
ssuser471dfb
 

Similar a .NET? MonoDroid Does (20)

Android Application Development Using Java
Android Application Development Using JavaAndroid Application Development Using Java
Android Application Development Using Java
 
Introduction to android sessions new
Introduction to android   sessions newIntroduction to android   sessions new
Introduction to android sessions new
 
My androidpresentation
My androidpresentationMy androidpresentation
My androidpresentation
 
Android quick talk
Android quick talkAndroid quick talk
Android quick talk
 
Introduction to Android- A session by Sagar Das
Introduction to Android-  A session by Sagar DasIntroduction to Android-  A session by Sagar Das
Introduction to Android- A session by Sagar Das
 
Android Programming
Android ProgrammingAndroid Programming
Android Programming
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to android
 
Building mobile apps using meteorJS
Building mobile apps using meteorJSBuilding mobile apps using meteorJS
Building mobile apps using meteorJS
 
Cross-Platform Development
Cross-Platform DevelopmentCross-Platform Development
Cross-Platform Development
 
Google android os
Google android osGoogle android os
Google android os
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
Android development
Android developmentAndroid development
Android development
 
Xamarin v.Now
Xamarin v.NowXamarin v.Now
Xamarin v.Now
 
Improve Android System Component Performance
Improve Android System Component PerformanceImprove Android System Component Performance
Improve Android System Component Performance
 
Overview of Adroid Architecture.pptx
Overview of Adroid Architecture.pptxOverview of Adroid Architecture.pptx
Overview of Adroid Architecture.pptx
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to android
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016
 
Android - Anroid Pproject
Android - Anroid PprojectAndroid - Anroid Pproject
Android - Anroid Pproject
 
Android OS
Android OSAndroid OS
Android OS
 
Android Architecture design programming with java
Android Architecture design programming with javaAndroid Architecture design programming with java
Android Architecture design programming with java
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Último (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

.NET? MonoDroid Does

  • 1. .NET? Mono for Android Does Kevin McMahon @klmcmahon http://blog.kevfoo.com
  • 2. Overview • Overview of Android • Mono for Android : What, How, Why • Code Demo • Mono for Android Resources
  • 3. What is Android? • Application Framework • Dalvik Virtual Machine • Optimized OpenGL ES 1.0 graphics library • Customized Linux 2.6 kernel • Rich development environment
  • 9. Dalvik Virtual Machine • Dalvik Virtual Machine – Register-based – Runs multiple VMs efficiently – Requires a .class to .dex transformation – JIT (as of Android 2.2) • Each Android Application: – Runs in their own process – Runs on their own VM
  • 10. What is Mono for Android? • Commercial Product from Novell – $399 individual / ~$999 enterprise / ~$99 student • Windows and Mac OS X (Linux soon) • Open preview – DOWNLOAD AND TRY IT! • Project is getting really close to 1.0 – No “Go Live” license yet – Not done with optimizations – Still changing the API
  • 11. How Does it Work? • Mono Runtime – Native to the device – Executes .Net code – Runs side-by-side with Dalvik • Mono to Android Communication – Java proxies • Android Callable Wrappers • Managed Callable Wrappers
  • 12. Mono for Android Architecture
  • 13. Mono for Android Design Principles • Follow the Framework Design Guidelines • Allow developers to subclass any Java class • C# delegates (lambdas, anonymous methods) • Java properties as C# properties • Strongly typed API
  • 14. Why use Mono for Android? • Mono for Android story not as compelling as MonoTouch. – GC, decent IDE, not Objective-C • Opportunities for re-use across platforms – iOS, Android, Windows Phone 7 non-UI components – MonoGame which is a port of XNA • Development tooling and environment – Visual Studio – MonoDevelop • C# > Java – Friction still due to Java idioms and architecture.
  • 15. Deployment Options • Deploy to Android Virtual Device • Deploy to Device • Debug capabilities on both • Sell (eventually) – Android Marketplace – Amazon App Store
  • 16. Android Application Concepts • Activities • Services • Content Providers • Intents • Resources
  • 17. Activities • Orchestrates a UI view • Applications are composed of 1-to-Many activities • One activity marked as main and shown first upon launch
  • 18. Activities - Views • Each activity is given a default window to draw in. • Content of the window is provided by a hierarchy of views • A view hierarchy is placed within an activity's window by the Activity.SetContentView()
  • 19. Activity Life Cycle • onCreate • onStart • onResume • onPause • onStop • onDestroy
  • 20. Services • Android service are what you’d expect. • Possible to bind to an ongoing service and communicate via exposed interface • Runs in main application process but doesn’t block other components or UI
  • 21. Content Providers • Queryable application data stores • Only way to share data amongst other apps • Android ships with common providers – Audio, video, images, contacts, etc. • Making your application’s data public – Create a new provider – Add your data to existing provider
  • 22. Content Provider Layer Applications Content Providers Contacts Music Videos Pictures …
  • 23. Intents • Eventing mechanism • Intent objects are passive data that is of interest to the component that is receiving the intent • Filterable
  • 24. Resources • Images, layout descriptions, binary blobs and string dictionaries • Abstraction layer which helps decouples code • Makes managing assets easier – Localization – Multiple displays – Different hardware configurations
  • 26. Mono for Android Resources Download the Preview! • http://mono-android.net/Welcome Links • http://www.mono-android.net • http://developer.android.com/ IRC Support / Discussion • #monodroid on irc.gnome.org Code • https://github.com/mono/monodroid-samples • https://github.com/kevinmcmahon/MonoDroid101

Notas del editor

  1. libc Media libraries based on OpenCORE LibWebCore SGL for 2D and OpenGL ES for 3D Graphics SQLite
  2. Views Content Providers Resource Manager Notification Manager Activity Manager
  3. System.*, System.IO.*, System.Net.* and the rest of the .NET class libraries to access the underlying Linux operating system facilities Audio, Graphics, OpenGL and Telephony are only exposed through the Dalvik Java APIs in Java.* or Android.* namespace
  4. “The native Android APIs do not operate directly with filenames, but instead operate on resource IDs. When you compile an Android application that uses resources, the build system will package the resources for distribution and generate a class called "R" (this is an Android convention) that contains the tokens for each one of the resources included.” – http://http://monodroid.net/Documentation/API_Design
  5. Demo Order: HelloLinearLayout HelloListView HelloL10N CABarCode HelloSpinner GPSMap