250 likes | 461 Views
Android OS. Kesav Kaliyaperumal kesav.kaliyaperumal@gmail.com. Yummy Desserts!. Cupcake Donuts Éclair Frozen Yoghurt (Froyo) Gingerbread Honeycomb What do these have in common?. Smartphone OS. Symbian Windows Mobile RIM Blackberry OS Apple iOS Google Android Palm WebOS
E N D
Android OS Kesav Kaliyaperumal kesav.kaliyaperumal@gmail.com
Yummy Desserts! • Cupcake • Donuts • Éclair • Frozen Yoghurt (Froyo) • Gingerbread • Honeycomb What do these have in common?
Smartphone OS • Symbian • Windows Mobile • RIM Blackberry OS • Apple iOS • Google Android • Palm WebOS • Windows Phone 7
Android OS • Fastest growing mobile OS • Over 300,000 Android activations a day • Android overtook iOS as the dominant OS in US during 2H 2010 • First phone launched HTC G1 in 2008 • Currently an OS of choice for Motorola, HTC, Samsung, Sony Ericsson, among others • Software updates every few months
Android – what is it? • software stack for mobile devices • incl. OS, middleware and key applications • Open source – source code is open and contributions are welcome • application framework enabling reuse/replacement of apps • Dalvik virtual machine optimized for mobile • integrated browser based on webkit • Optimized graphics – 2D graphics library, 3D based on OPEN GL ES • SQLite for data storage • Media support (MPEG4, H.264, MP3, AAC, JPG, PNG,…) • Support for radio interfaces, Bluetooth, WiFi, Camera, GPS, accelerometer • Software Development Kit (SDK) • Preinstalled applications from Google (GMS) • Gmail, Maps, Search, Voice Search, Youtube
Software Stack • Linux kernel • Libraries • Android run time • core libraries • Dalvik virtual machine • application layer • application protocol
Android • Google Maps and other GMS applications • Background services and applications • allows multi tasking of applications • Shared Data and interprocess communication • All applications are equal • does not discriminate between native and non-native applications • allows any applications to be enhanced/reused • p2p interdevice application messaging
Dalvik VM • All applications written in Java and converted to the dalvik executable .dex • Every android app runs its own process, with its own instance of the dalvik virtual machine • Not a traditional JVM, but a custom VM designed to run multiple instances efficiently on a single device • VM uses linux kernel to handle low-level functionality incl. security, threading, process and memory management
Application Framework • Rich, extensible set of Views • apps can inclused lists, grids, text boxes, buttons, web browser • Content Providers • allows data access from other applications or share own data • Resource Manager • access to localized strings, graphics, layout files • Notification Manager • enables custom alerts to be displayed in status bar • Activity Manager • Manages lifecycle of applications and provides navigation backstack
Application Fundamentals • Activities • application presentation layer • Services • invisible components, update data sources, visible activities, trigger notifications • perform regular processing even when app is not active or invisible • Content Providers • shareable data store • Intents • message passing framework • broadcase messages system wide, for an action to be performed • Broadcast receivers • consume intent broadcasts • lets app listen for intents matching a specific criteria like location • Notifications • Toast notification • Status Bar Notification • Dialog notification
Applications • All apps (native and 3rd party) are written using the same APIs and run on the same run time executable • All apps have APIs for hardware access, location-based services, support for background services, map-based activities, 2D and 3D graphics. • App Widgets are miniature app views that can be embedded in other apps like Home Screen
App Priority and Processes • Android apps do not have control over their own life cycles • Aggressively manages resources to ensure device responsiveness and kills process/apps when needed • Active Process – critical priority • Visible Process – high priority • Started Service Process • Background Process – low priority • Empty process
Client apps • Developed using the Android SDK and installed on user devices • Compiled Java code, with data and resource – bundled by Android Asset Packaging tool (AAPT) into Android package or .apk • All applications have Android Manifest file in its root directory • provides essential information about app • Could be installed directly on phone, but necessary to be distributed thru Market
Web Apps • An alternative to standalone apps • Developed using web standards and accessed through browser – nothing to install on devices • Mixing client and web apps is also possible – Client apps can embed web pages using “Webview” in Android app
SDK • Android APIs, Full Documentation and Sample code • Development tools • Dalvik Debug Monitor Service (DDMS) • Android Debug Bridge (ADB) • Android Emulator • Online support and blog • Native Development Kit also available • allows developers to implement parts of apps in native-code languages like C/C++ • Plug in available to use Eclipse integrated development environment • Developer forums and developer phones from Google, MOTO Dev studio from Motorola
Android Market • Google Market - Part of GMS apps • 3rd party apps submitted to Google, approved and distributed through Market • Both Free and Paid apps • Apps now limited to 50 MB; updates possible through Market • Monetization through ads available • Available in many countries, not all countries have support for paid apps • Other Market place applications available – Amazon has announced its own Android Market place • App searches filtered based on Manifest file (eg. if a device does not have trackball, apps using trackball will be filtered out) • Every app publishes a list of components the app will access and permissions need to be granted before installation • Apps installed on device and SD card (SD Card from Froyo)
Search • Core feature in android • User should be able to search any data on device or internet • Usually one of the android buttons • Search suggestions based on recent queries • Provide custom search suggestions that match actual results in application data • system side Quick Search Box • Voice Search available and enhanced in recent releases
Locations & Maps • Compelling and most popular apps for mobile devices • Google Maps provides free navigation • applications allowed access to location services supported by device • Google provides Maps external library • allows built-in downloading, rendering and caching of Maps tiles, and other display options and controls
Device Administration • Froyo introduces support for enterprise applications with Device Administraion API • allows to create security-aware applications to control employee devices • Apps might include • Email clients • remote wipe • device management services and apps
Android Software Updates • Android 1.0 – G1 • 1.5 – Cupcake • 1.6 – Donuts (CDMA support) • 2.0 – Éclair (Droid introduced with Éclair) • 2.2 – Froyo • 2.3 Gingerbread (SDK released 2 weeks ago and source will follow soon) • API Levels used by apps to identify software version on the device • Android apps are generally forward compatible with newer version, but not necessarily backwards compatible
Compatibility • Why? • Allow customizable devices • Create Common eco system • Android compatibility is free and easy • Obtain Android source code • Comply with Android Compatibility Definition (ACD) doc • List requirements that need to be met for devices to be compatible with a particular version on Android • Pass the Compatibility Test Suite (CTS) • Automated test harness running on desktop, manages test exectuion • Test cases written, packaged as .apk to run on actual device or emulator • Porting guide available for bringing up Android on custom HW
Other possibilities • Google TV - a new platform based on Android • Tablets – Samsung Galaxy tab introduced in Oct 2010 • eBook reader – Latest Barnes and Noble Nook is an Android tablet
Resources • http://www.android.com • http://http://android-developers.blogspot.com • http://developer.motorola.com/