SlideShare une entreprise Scribd logo
1  sur  27
Mono for
    Android
  Developing Android
applications using C# and
          .NET



     Willem Meints
     @wmeints
Agenda
 Introduction
 Android Framework
 App model
 Java vs. Mono
 Bindings
 Runtime

             Developing Android applications using C# and .NET
Android



 Open Source Mobile OS from Google
 Hardware made by many
 – HTC
 – Samsung
              Developing Android applications using C# and .NET
Android
 Many manufacturers means
 – Many user interfaces
 – Many hardware configurations
 – Many active OS versions




                Developing Android applications using C# and .NET
Android - Tools




            Developing Android applications using C# and .NET
Introducing Mono for Android
 Mono for Android is
 – .NET Runtime for Android
 – Bindings to Android API’s
 – Visual Studio 2010 plugin
    • MonoDevelop also possible
 Uses all the Android SDK tools under the hood
 (emulator, adb, etc.)

                  Developing Android applications using C# and .NET
Cross Platform Mobile Development - Android
Android - Framework
      Applications



  Application Framework



   Libraries & Runtime



      Linux Kernel


                         Developing Android applications using C# and .NET
Android - Framework
      Applications                                 Linux Kernel
                                                   Drivers for
  Application Framework                              –    Display
                                                     –    Camera
   Libraries & Runtime                               –    WiFi
                                                     –    Audio
                                                     –    Keypad
      Linux Kernel
                                                     –    Etc.
                         Developing Android applications using C# and .NET
Android - Framework
      Applications                                 Dalvik VM
                                                   Libraries for
  Application Framework                              –    Media
                                                     –    SQLite
   Libraries & Runtime                               –    SSL
                                                     –    OpenGL
                                                     –    WebKit
      Linux Kernel
                                                     –    Etc.
                         Developing Android applications using C# and .NET
Android - Framework
      Applications                                 Activity Manager
                                                   Window Manager
  Application Framework                            Content Providers
                                                   Package Manager
   Libraries & Runtime
                                                   Location Manager
                                                   Notification Manager
      Linux Kernel
                                                   Telephony Manager
                         Developing Android applications using C# and .NET
Android - Framework
      Applications                                 Home
                                                   Contacts
  Application Framework                            Phone
                                                   Browser
   Libraries & Runtime
                                                   <your app here>
                                                   Etc.
      Linux Kernel


                         Developing Android applications using C# and .NET
App model - Components
 Applications consist of several components
 – Activities
 – Content Providers
 – Broadcast Receivers
 – Services




                Developing Android applications using C# and .NET
App model - Activity lifecycle
                                       Activity           Initialize
                                      Launched          layout here
                                       onCreate()

                    Restore
     User navigates to                  onStart()                      onRestart()
        the activity
                  state here
                                       onResume()
      App process comes into the
      Another activity
               foreground
          killed                       Activity      User returns to
      The activity is no longer visiblerunning        the activity
     Apps with higher state
      The activitySave
                   is finishing or being onPause()
       priority need
         memory here
         destroyed by the system
                                                                  User navigates to
                                          onStop()
                                                                     the activity

                                       onDestroy()

                                    Activity shut
                                       down
App model - Intents




                                                                             Intent
   View                                    View


                 Intent                                                   Broadcast
  Activity   Intent
                                       Activity              Intent
                                                                           Receiver




                                  Intent




                                                  Intent
  Content
  Provider

                                           Service



                      Developing Android applications using C# and .NET
App model - Intents
 Intents are messages routed through the OS
 Intents are powerful. They allow:
 – Components of one application to be used by
   another
 – Allows applications to replace core OS
   functionality



                Developing Android applications using C# and .NET
App model
 The app model for Mono for Android is the
 same as for regular Android apps.

 The behind the scenes however…




                Cross Platform Mobile Development - Android
Mono for Android architecture

               Android                                     Android.
  .NET APIs                         MCW                                   Java.*
               Bindings                                       *

   Mono (.NET Runtime)                 ACW                  Dalvik (Java Runtime)


                                Linux Kernel




                      Developing Android applications using C# and .NET
Java vs. Mono - Callable Wrappers
 Mono Callable Wrappers (MCW)
 – Mono  Java
 – Uses JNI ( Java Native Interface )
 Android Callable Wrappers (ACW)
 – Java  Mono
 – Uses Mono runtime components


                  Developing Android applications using C# and .NET
Cross Platform Mobile Development - Android
Mono for Android - Bindings
 99,9% of the Android API is bound to .NET
 – There’s always a few minor details that work
   different or couldn’t be converted (yet!)


 Most of the Java API is bound as well.
 – These are redundant, but necessary to make some
   of the Android stuff work.

                 Developing Android applications using C# and .NET
Mono for Android - Runtime
 Android apps are optimized using the linker
 – Users don’t need to install the runtime on their
   phone. It is included in the package.
 Please note:
 – While running in debug, the app is not linked
   unless you specify that it must be linked
 – Linking in debug has effect on the debugging
   capabilities
                 Developing Android applications using C# and .NET
Mono for Android - Runtime
 Need a library that isn’t bound yet?
 – You can generate them yourself from JAR files.
 – Project type provided.
Some interesting thoughts
 Mono for Android is C# for the Android
 platform, which means

 – You can reuse a lot of code in Windows Phone and
   Monotouch apps

 – If you split your code correctly of course.

                  Developing Android applications using C# and .NET
Some interesting thoughts
           UI                    UI                      UI




                         Business Logic


                  Device abstraction layer

         Device               Device                  Device



                Developing Android applications using C# and .NET
Cross Platform Mobile Development - Android
Questions?




             Cross Platform Mobile Development - Android

Contenu connexe

Tendances

Android development classes in chandigarh : Big Boxx Academy
Android development classes in chandigarh : Big Boxx AcademyAndroid development classes in chandigarh : Big Boxx Academy
Android development classes in chandigarh : Big Boxx AcademyBig Boxx Animation Academy
 
Introduction to java advanced imaging
Introduction to java advanced imagingIntroduction to java advanced imaging
Introduction to java advanced imagingkanchanmahajan23
 
FEATURES OF RUBYMINE
FEATURES OF RUBYMINEFEATURES OF RUBYMINE
FEATURES OF RUBYMINEMindfire LLC
 
Android Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar GargentaAndroid Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar GargentaMarakana Inc.
 
Felgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth ComparisonFelgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth ComparisonKaty Slemon
 
MOBILE APPLICATIONS DEVELOPMENT -ANDROID BY SIVASANKARI
MOBILE APPLICATIONS DEVELOPMENT -ANDROID BY SIVASANKARIMOBILE APPLICATIONS DEVELOPMENT -ANDROID BY SIVASANKARI
MOBILE APPLICATIONS DEVELOPMENT -ANDROID BY SIVASANKARISivaSankari36
 
Android In A Nutshell
Android In A NutshellAndroid In A Nutshell
Android In A NutshellTed Chien
 
Mobilefirst - Build Enterprise Class Apps for Mobile First
Mobilefirst - Build Enterprise Class Apps for Mobile First Mobilefirst - Build Enterprise Class Apps for Mobile First
Mobilefirst - Build Enterprise Class Apps for Mobile First Sanjeev Kumar
 
Why does .net maui deserve your attention if you’re planning to use xamarin
Why does .net maui deserve your attention if you’re planning to use xamarin  Why does .net maui deserve your attention if you’re planning to use xamarin
Why does .net maui deserve your attention if you’re planning to use xamarin Moon Technolabs Pvt. Ltd.
 
Mobile Application Development
Mobile Application DevelopmentMobile Application Development
Mobile Application DevelopmentAbhi583497
 
Android Development in a Nutshell
Android Development in a NutshellAndroid Development in a Nutshell
Android Development in a NutshellAleix Solé
 
Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Moon Technolabs Pvt. Ltd.
 
Build Community Android Distribution and Ensure the Quality
Build Community Android Distribution and Ensure the QualityBuild Community Android Distribution and Ensure the Quality
Build Community Android Distribution and Ensure the QualityNational Cheng Kung University
 
Cocoon Best Practises
Cocoon Best PractisesCocoon Best Practises
Cocoon Best Practisesmr.quinn
 
Transforming a 15 year old model-driven application from C++ to Java
Transforming a 15 year old model-driven application from C++ to JavaTransforming a 15 year old model-driven application from C++ to Java
Transforming a 15 year old model-driven application from C++ to JavaEric Malotaux
 
Xamarin vs. native script which one is the ideal cross-platform framework fo...
Xamarin vs. native script  which one is the ideal cross-platform framework fo...Xamarin vs. native script  which one is the ideal cross-platform framework fo...
Xamarin vs. native script which one is the ideal cross-platform framework fo...Moon Technolabs Pvt. Ltd.
 
Beyond Continuous Delivery at DevOpsDays Rome 2012
Beyond Continuous Delivery at DevOpsDays Rome 2012Beyond Continuous Delivery at DevOpsDays Rome 2012
Beyond Continuous Delivery at DevOpsDays Rome 2012Chris Hilton
 

Tendances (20)

Android development classes in chandigarh : Big Boxx Academy
Android development classes in chandigarh : Big Boxx AcademyAndroid development classes in chandigarh : Big Boxx Academy
Android development classes in chandigarh : Big Boxx Academy
 
Introduction to java advanced imaging
Introduction to java advanced imagingIntroduction to java advanced imaging
Introduction to java advanced imaging
 
FEATURES OF RUBYMINE
FEATURES OF RUBYMINEFEATURES OF RUBYMINE
FEATURES OF RUBYMINE
 
MERLINO2015
MERLINO2015MERLINO2015
MERLINO2015
 
Android Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar GargentaAndroid Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar Gargenta
 
Embarcadero RAD Studio XE3 presentation
Embarcadero RAD Studio XE3 presentationEmbarcadero RAD Studio XE3 presentation
Embarcadero RAD Studio XE3 presentation
 
Felgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth ComparisonFelgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth Comparison
 
MOBILE APPLICATIONS DEVELOPMENT -ANDROID BY SIVASANKARI
MOBILE APPLICATIONS DEVELOPMENT -ANDROID BY SIVASANKARIMOBILE APPLICATIONS DEVELOPMENT -ANDROID BY SIVASANKARI
MOBILE APPLICATIONS DEVELOPMENT -ANDROID BY SIVASANKARI
 
Android In A Nutshell
Android In A NutshellAndroid In A Nutshell
Android In A Nutshell
 
Mobilefirst - Build Enterprise Class Apps for Mobile First
Mobilefirst - Build Enterprise Class Apps for Mobile First Mobilefirst - Build Enterprise Class Apps for Mobile First
Mobilefirst - Build Enterprise Class Apps for Mobile First
 
Why does .net maui deserve your attention if you’re planning to use xamarin
Why does .net maui deserve your attention if you’re planning to use xamarin  Why does .net maui deserve your attention if you’re planning to use xamarin
Why does .net maui deserve your attention if you’re planning to use xamarin
 
Mobile Application Development
Mobile Application DevelopmentMobile Application Development
Mobile Application Development
 
Android Development in a Nutshell
Android Development in a NutshellAndroid Development in a Nutshell
Android Development in a Nutshell
 
01 gui 01
01 gui 0101 gui 01
01 gui 01
 
Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development
 
Build Community Android Distribution and Ensure the Quality
Build Community Android Distribution and Ensure the QualityBuild Community Android Distribution and Ensure the Quality
Build Community Android Distribution and Ensure the Quality
 
Cocoon Best Practises
Cocoon Best PractisesCocoon Best Practises
Cocoon Best Practises
 
Transforming a 15 year old model-driven application from C++ to Java
Transforming a 15 year old model-driven application from C++ to JavaTransforming a 15 year old model-driven application from C++ to Java
Transforming a 15 year old model-driven application from C++ to Java
 
Xamarin vs. native script which one is the ideal cross-platform framework fo...
Xamarin vs. native script  which one is the ideal cross-platform framework fo...Xamarin vs. native script  which one is the ideal cross-platform framework fo...
Xamarin vs. native script which one is the ideal cross-platform framework fo...
 
Beyond Continuous Delivery at DevOpsDays Rome 2012
Beyond Continuous Delivery at DevOpsDays Rome 2012Beyond Continuous Delivery at DevOpsDays Rome 2012
Beyond Continuous Delivery at DevOpsDays Rome 2012
 

En vedette

Search enabled applications with lucene.net
Search enabled applications with lucene.netSearch enabled applications with lucene.net
Search enabled applications with lucene.netWillem Meints
 
Acceptance test driven development
Acceptance test driven developmentAcceptance test driven development
Acceptance test driven developmentWillem Meints
 
Build better mobile apps and become a better person
Build better mobile apps and become a better personBuild better mobile apps and become a better person
Build better mobile apps and become a better personWillem Meints
 
The metro design language for app developers
The metro design language for app developersThe metro design language for app developers
The metro design language for app developersWillem Meints
 
Prototyping windows store apps
Prototyping windows store appsPrototyping windows store apps
Prototyping windows store appsWillem Meints
 
Using java interop in your xamarin.android apps
Using java interop in your xamarin.android appsUsing java interop in your xamarin.android apps
Using java interop in your xamarin.android appsWillem Meints
 
Big data streaming with Apache Spark on Azure
Big data streaming with Apache Spark on AzureBig data streaming with Apache Spark on Azure
Big data streaming with Apache Spark on AzureWillem Meints
 

En vedette (9)

MonoDroid Crossplatform
MonoDroid CrossplatformMonoDroid Crossplatform
MonoDroid Crossplatform
 
LESS is more
LESS is moreLESS is more
LESS is more
 
Search enabled applications with lucene.net
Search enabled applications with lucene.netSearch enabled applications with lucene.net
Search enabled applications with lucene.net
 
Acceptance test driven development
Acceptance test driven developmentAcceptance test driven development
Acceptance test driven development
 
Build better mobile apps and become a better person
Build better mobile apps and become a better personBuild better mobile apps and become a better person
Build better mobile apps and become a better person
 
The metro design language for app developers
The metro design language for app developersThe metro design language for app developers
The metro design language for app developers
 
Prototyping windows store apps
Prototyping windows store appsPrototyping windows store apps
Prototyping windows store apps
 
Using java interop in your xamarin.android apps
Using java interop in your xamarin.android appsUsing java interop in your xamarin.android apps
Using java interop in your xamarin.android apps
 
Big data streaming with Apache Spark on Azure
Big data streaming with Apache Spark on AzureBig data streaming with Apache Spark on Azure
Big data streaming with Apache Spark on Azure
 

Similaire à Mono for android

2011 android
2011 android2011 android
2011 androidvpedapolu
 
Android Introduction
Android IntroductionAndroid Introduction
Android Introductionaswapnal
 
Android complete basic Guide
Android complete basic GuideAndroid complete basic Guide
Android complete basic GuideAKASH SINGH
 
Android : Revolutionizing Mobile Devices
Android : Revolutionizing Mobile DevicesAndroid : Revolutionizing Mobile Devices
Android : Revolutionizing Mobile DevicesRitesh Puthran
 
Hybrid Mobile Application Framework
Hybrid Mobile Application FrameworkHybrid Mobile Application Framework
Hybrid Mobile Application Framework동수 장
 
Droid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtimeDroid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtimeDroidcon Berlin
 
An introduction to Android
An introduction to AndroidAn introduction to Android
An introduction to AndroidRajesh Jambukia
 
Android Development: The Basics
Android Development: The BasicsAndroid Development: The Basics
Android Development: The BasicsMike Desjardins
 
Comparisons react native vs. flutter vs. ionic vs. xamarin vs. native script
Comparisons  react native vs. flutter vs. ionic vs. xamarin vs. native scriptComparisons  react native vs. flutter vs. ionic vs. xamarin vs. native script
Comparisons react native vs. flutter vs. ionic vs. xamarin vs. native scriptMoonTechnolabsPvtLtd
 
MonoTouch 5.2 Introduction
MonoTouch 5.2 IntroductionMonoTouch 5.2 Introduction
MonoTouch 5.2 IntroductionXamarin
 
Academy PRO: .NET Core intro
Academy PRO: .NET Core introAcademy PRO: .NET Core intro
Academy PRO: .NET Core introBinary Studio
 
Introduction to android mobile app development.pptx
Introduction to android mobile app development.pptxIntroduction to android mobile app development.pptx
Introduction to android mobile app development.pptxridzah12
 
Cross platform mobile development (speaker Vitaly Ilchenko, Binary Studio)
Cross platform mobile development (speaker Vitaly Ilchenko, Binary Studio)Cross platform mobile development (speaker Vitaly Ilchenko, Binary Studio)
Cross platform mobile development (speaker Vitaly Ilchenko, Binary Studio)Binary Studio
 

Similaire à Mono for android (20)

2011 android
2011 android2011 android
2011 android
 
Eco system apps
Eco system appsEco system apps
Eco system apps
 
Android Introduction
Android IntroductionAndroid Introduction
Android Introduction
 
Android complete basic Guide
Android complete basic GuideAndroid complete basic Guide
Android complete basic Guide
 
Improve Android System Component Performance
Improve Android System Component PerformanceImprove Android System Component Performance
Improve Android System Component Performance
 
Android OS
Android OSAndroid OS
Android OS
 
My androidpresentation
My androidpresentationMy androidpresentation
My androidpresentation
 
Android : Revolutionizing Mobile Devices
Android : Revolutionizing Mobile DevicesAndroid : Revolutionizing Mobile Devices
Android : Revolutionizing Mobile Devices
 
Hybrid Mobile Application Framework
Hybrid Mobile Application FrameworkHybrid Mobile Application Framework
Hybrid Mobile Application Framework
 
Droid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtimeDroid con berlin_the_bb10_android_runtime
Droid con berlin_the_bb10_android_runtime
 
An introduction to Android
An introduction to AndroidAn introduction to Android
An introduction to Android
 
Ionic2 First Lesson of Four
Ionic2 First Lesson of FourIonic2 First Lesson of Four
Ionic2 First Lesson of Four
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Android Development: The Basics
Android Development: The BasicsAndroid Development: The Basics
Android Development: The Basics
 
Comparisons react native vs. flutter vs. ionic vs. xamarin vs. native script
Comparisons  react native vs. flutter vs. ionic vs. xamarin vs. native scriptComparisons  react native vs. flutter vs. ionic vs. xamarin vs. native script
Comparisons react native vs. flutter vs. ionic vs. xamarin vs. native script
 
MonoTouch 5.2 Introduction
MonoTouch 5.2 IntroductionMonoTouch 5.2 Introduction
MonoTouch 5.2 Introduction
 
Android the future
Android  the futureAndroid  the future
Android the future
 
Academy PRO: .NET Core intro
Academy PRO: .NET Core introAcademy PRO: .NET Core intro
Academy PRO: .NET Core intro
 
Introduction to android mobile app development.pptx
Introduction to android mobile app development.pptxIntroduction to android mobile app development.pptx
Introduction to android mobile app development.pptx
 
Cross platform mobile development (speaker Vitaly Ilchenko, Binary Studio)
Cross platform mobile development (speaker Vitaly Ilchenko, Binary Studio)Cross platform mobile development (speaker Vitaly Ilchenko, Binary Studio)
Cross platform mobile development (speaker Vitaly Ilchenko, Binary Studio)
 

Mono for android

  • 1. Mono for Android Developing Android applications using C# and .NET Willem Meints @wmeints
  • 2. Agenda Introduction Android Framework App model Java vs. Mono Bindings Runtime Developing Android applications using C# and .NET
  • 3. Android Open Source Mobile OS from Google Hardware made by many – HTC – Samsung Developing Android applications using C# and .NET
  • 4. Android Many manufacturers means – Many user interfaces – Many hardware configurations – Many active OS versions Developing Android applications using C# and .NET
  • 5. Android - Tools Developing Android applications using C# and .NET
  • 6. Introducing Mono for Android Mono for Android is – .NET Runtime for Android – Bindings to Android API’s – Visual Studio 2010 plugin • MonoDevelop also possible Uses all the Android SDK tools under the hood (emulator, adb, etc.) Developing Android applications using C# and .NET
  • 7. Cross Platform Mobile Development - Android
  • 8. Android - Framework Applications Application Framework Libraries & Runtime Linux Kernel Developing Android applications using C# and .NET
  • 9. Android - Framework Applications Linux Kernel Drivers for Application Framework – Display – Camera Libraries & Runtime – WiFi – Audio – Keypad Linux Kernel – Etc. Developing Android applications using C# and .NET
  • 10. Android - Framework Applications Dalvik VM Libraries for Application Framework – Media – SQLite Libraries & Runtime – SSL – OpenGL – WebKit Linux Kernel – Etc. Developing Android applications using C# and .NET
  • 11. Android - Framework Applications Activity Manager Window Manager Application Framework Content Providers Package Manager Libraries & Runtime Location Manager Notification Manager Linux Kernel Telephony Manager Developing Android applications using C# and .NET
  • 12. Android - Framework Applications Home Contacts Application Framework Phone Browser Libraries & Runtime <your app here> Etc. Linux Kernel Developing Android applications using C# and .NET
  • 13. App model - Components Applications consist of several components – Activities – Content Providers – Broadcast Receivers – Services Developing Android applications using C# and .NET
  • 14. App model - Activity lifecycle Activity Initialize Launched layout here onCreate() Restore User navigates to onStart() onRestart() the activity state here onResume() App process comes into the Another activity foreground killed Activity User returns to The activity is no longer visiblerunning the activity Apps with higher state The activitySave is finishing or being onPause() priority need memory here destroyed by the system User navigates to onStop() the activity onDestroy() Activity shut down
  • 15. App model - Intents Intent View View Intent Broadcast Activity Intent Activity Intent Receiver Intent Intent Content Provider Service Developing Android applications using C# and .NET
  • 16. App model - Intents Intents are messages routed through the OS Intents are powerful. They allow: – Components of one application to be used by another – Allows applications to replace core OS functionality Developing Android applications using C# and .NET
  • 17. App model The app model for Mono for Android is the same as for regular Android apps. The behind the scenes however… Cross Platform Mobile Development - Android
  • 18. Mono for Android architecture Android Android. .NET APIs MCW Java.* Bindings * Mono (.NET Runtime) ACW Dalvik (Java Runtime) Linux Kernel Developing Android applications using C# and .NET
  • 19. Java vs. Mono - Callable Wrappers Mono Callable Wrappers (MCW) – Mono  Java – Uses JNI ( Java Native Interface ) Android Callable Wrappers (ACW) – Java  Mono – Uses Mono runtime components Developing Android applications using C# and .NET
  • 20. Cross Platform Mobile Development - Android
  • 21. Mono for Android - Bindings 99,9% of the Android API is bound to .NET – There’s always a few minor details that work different or couldn’t be converted (yet!) Most of the Java API is bound as well. – These are redundant, but necessary to make some of the Android stuff work. Developing Android applications using C# and .NET
  • 22. Mono for Android - Runtime Android apps are optimized using the linker – Users don’t need to install the runtime on their phone. It is included in the package. Please note: – While running in debug, the app is not linked unless you specify that it must be linked – Linking in debug has effect on the debugging capabilities Developing Android applications using C# and .NET
  • 23. Mono for Android - Runtime Need a library that isn’t bound yet? – You can generate them yourself from JAR files. – Project type provided.
  • 24. Some interesting thoughts Mono for Android is C# for the Android platform, which means – You can reuse a lot of code in Windows Phone and Monotouch apps – If you split your code correctly of course. Developing Android applications using C# and .NET
  • 25. Some interesting thoughts UI UI UI Business Logic Device abstraction layer Device Device Device Developing Android applications using C# and .NET
  • 26. Cross Platform Mobile Development - Android
  • 27. Questions? Cross Platform Mobile Development - Android