Android ABSTRACT Android — an open-source software stack for mobile phones The smartphone market is growing at a furious pace. This new breed of portable and always connected computers are outselling PCs and will soon be found in most every pocket. In this two hour talk I'll give an overview of Android, an open-source software stack for these new devices. The first part of the talk gives an overview of the user interface, developer interface, and OEM/carrier interface. The second part describes some of the main components of the kernel, runtime, libraries, and application framework. _ What _ Why _ Resources (android.com, Ed Burnette: Hello Android) _ Design Goals and Limitations _ Interfaces _ User _ Developer _ OEM _ Components (Android CPU <-> Radio) _ Linux Kernel (Binder, Power Management, Logging) _ Runtime (Harmony, Dalvik) _ Libraries (SQLite, Webkit, libc, media, 2D/3D, ...) _ Application Framework _ Applications (Market, Map, GMail) WHAT Android is an open-source software stack created for mobile phones and other devices. WHY Growing much faster than PC:s back then. (200,000/day registered) - Personal, (religious fervor among some iPhone users) (personal history) - portable, location aware and always connected. - Ubiquitous (cf. email, Ubicomp) Have ears, eyes and skin. (Proximity sensor, vibrator) Replace watch, map, adress book, calendar, note book, tuner, metronome, camera, video cam, voice recorder, stethoscope, ... and, of course, opens up new possibilities. CS interest: Android <-> full curriculum, 240 projects that span all of CS. RESOURCES android.com developer.android.com source.android.com android.com/market/ Burnette: Hello Android, 3rd ed. (Excellent intro for developers) planetandroid.com (Daily news for developers) DESIGN GOALS AND LIMITATIONS Multitasking crucial for mobile usage patterns. (Ex. check time) Fast switching between user tasks. No need to "close" applications when done. APIs must be sufficient for all applications on platform. Small memory with low memory bandwidth and no swap Limited battery power (~1000 mAh) MAIN INTERFACES Users Home - Web browser Back button (stack) - Tab Apps - Web sites Screen (activities) - Web pages Market for apps. Notifications. Developers Java, Eclipse, Emulator (ARM, MMU), rich API with reusable components, rich tool set with UI builder, resource management, debugger etc. Open source, articles, blogs, docs, free money (no, that's Windows Phone 7). Managed architecture with call-back methods. Application consists of - Activities, Services, Content providers, Broadcast receivers - Intents ("Take a photo and give it to me", "Place call to X", etc) - Resources - Manifest file (description of components and requirements) and is delivered in signed .apk-file thru market. Runs in sandbox (memory, process, uid unique) Talks to others thru Intents and Contentproviders (impl. by Binder). At the mercy of user and runtime. Complicated life cycle. OEMs and carriers Goals: - Consistent environment to application developers - Consistent experience for consumers - Differentiate while being compatible - Minimize overhead associated with compatibility Strict compatibility documents: hw, sw features, API:s and test suite. Open source with Apache license that implements all of this. Well-defined API:s for drivers. Plenty of possibilities for customization. Market, gmail, and gmap all require licensing from Google. (BOM: memory, processor, screen, ...) MAIN COMPONENTS --------------- | Android CPU | - Radio CPU - DSP - ... --------------- Linux kernel (GNU, everything else Apache) Binder (IPC) Power Management (Wakelock) Logging Service Android Runtime Core Java Libraries (Harmony) Dalvik Virtual Machine (.dex, register based, memory efficient, JIT) Libraries SQLite (lite database, one file, no setup) WebKit (browser engine) bionic libc (half the size of glibc) Media libs, 2D and 3D graphics, OpenGL, fonts, ... Application Framework Activity manager Package manager Window manager Content providers Resource manager Location manager Notification manager Applications Home, Browser, Phone, Contacs, Email, SMS, Camera... All in Java using standard API:s. NOTE: Market, Gmail, Maps are proprietary.