The Android Platform: a new kind of Linux Neal McBurnett http://neal.mcburnett.org/ ---- Ad: Bruce, the Presentation Tool, puts reStructuredText in your projector (Python, Pyglet) Ask clarification questions any time Probably best to save other questions for the end ---- Who has an Android device? Thanks to David Overcash for Android enthusiasm ---- Android - a platform not just an OS Linux, Java, Android API, Apps and Market Multiple devices, hardware architectures Popular: Number two in US mobile web browsing ---- Linux, not GNU/Linux Not POSIX New userspace No X11, just framebuffers Hardly any GNU-licensed code Not even GNU C library. "Bionic" via BSD ---- Focus on power Critical for both handheld and data center ---- Open source: core platform Managed by Google and Android Handset Alliance Mostly Apache 2.0 license - helps fight patents GPLv2 for Kernel LGPL for WebKit Some apps open source ---- Closed Lots of drivers Gmail, Maps, IM, Calendar, etc. Cellular communications SDK: restricted to only Android development Community not so open yet FSF working towards totally open Android ---- Secure booting Bootloader loads SPL: Second Program Loader Image has a crypto signature G1 SPL requires good signature Developer phones also available: ADP1, Google Ion Their SPL allows unsigned images ---- Carriers and Manufacturers still seeking control G1: locked down the OS (well, they tried....) ---- Multiple exploits G1 was "locked" – OS and SIM But within a few weeks, found big bug all user typing is given to a root shell - Oops! Quickly fixed, but bad signed OS in the wild.... Aug 2009, another one: "one click" exploit ---- Popular third-party images: recovery: nandroid backup system: JesusFreke, Cyanogen ---- Mobile devices Phones, MIDs, netbooks, GPS, media players ---- Other platforms Google Chrome OS ---- Application portability Good for users and developers Devices ------- HTC Dream / T-Mobile G1, Oct 2008 ADP1: unlocked developer phone Similar hardware to iPhone GPS, accelerometer, compas, camera, memory card HTC Magic (Google Ion) - No keyboard Google I/O giveaway :) 18 devices this year, e.g. Sony, Ericsson, Motorola, LG, Panasonic ---- GPS from Garmin Netbooks? Set-top boxes? Beagleboard – basic HW - $149 ---- Donut Release coming next Universal search on device Handwriting gestures Text-to-speech API WVGA displays (800x480?) ---- Application framework WebKit - derived from Konqueror's KHTML iPhone, Palm Pre, Safari, Chrome, etc SQLite Focus on web applications ---- Java, with no Java ME (Micro Edition) - Sun licensing issues Core class library from Apache Harmony, not Sun (/Oracle) Dalvik: new Java Virtual Machine Register-based architecture, different bytecode Challenges for JVM-based languages like Jython, Scala, Groovy, JRuby etc. Efficient sharing between processes On the way: JIT compilation, better GC, optimizations ---- Apps can be downloaded from web sites or installed easily by hand, unlike iPhone Alternate markets are no problem: AndAppStore, SlideME, Voeveo Google's Market is very open But don't drain people's batteries! T-Mobile didn't want tethering - TOS violation ---- 10,000 Apps now in the store Browse, statistics at http://www.androlib.com/ Browsing, email, maps, youtube, Facebook, twitter, etc GPS tracking Qik - sharing your video stream Google Voice Sipdroid – open source SIP client Android Scripting Environment: Python, Lua, Beanshell, JRuby, Perl Tricorder ---- Anyone can make an Android phone Platform adoption levels: - Obligation Free (using open source code) - Strings Attached (distribution agreement for Google proprietary apps) - Google Experience (branding, market access) ---- Securing the platform: each app has its own uid, like OLPC USENIX keynote talk by Rich Cannings: android security leader ---- Over 100 different permissions that app can require and user approves: network communication; location access; contacts; etc. ---- Development Options - Java: full UI power, Eclipse - Ajax: platform independence - Native libraries: performance, watch out for portability ---- Ajax: Javascript, HTML5 HTML5 gradually including access to platform capabilities - Graphics (canvas) - Video (scripted) MP4 and Ogg Theora? - Geolocation - Local storage - Web workers (threading) ---- Phonegap implements much of that now - free application development environment Generates project to compile for native platform Supports Android, iPhone, Blackberry. Soon Palm Pre ---- Google Wave - HTML5 and the Cloud Via Google I/O DevCon in May, I got access to Google Wave preview webapp "Email" done right with anti-spam Communication, collaboration Mail, IM, Wiki, shared games with playback, APIs for robots and extensions, tie-ins to voice? (Jingle) General Verifiable Federation protocol ---- Still waiting for: Most Bluetooth profiles Good free local PDF reader Flash support ("talk to Adobe" (or Gnash, swfdec)), but battery, memory concerns Multitouch (hacked in already) ---- Lots of opportunities coming via Android Android on everything? Android Links: delicious.com/nealmcb/android Neal McBurnett: neal.mcburnett.org