17. HistoryFebruary 2011: Android 3.0 Honeycombon the first Android tablet: the Motorola Xoom.■ New UI: Holo theme, Fragments, Action Bar■ Full 2D hardware acceleration.
18. History3Q11: Android market share doubles comparedto 3Q10 and becomes to most used mobile OS.
19. HistoryNovember 2011:Android 4.0 Ice Cream Sandwichon Google/Samsung Galaxy Nexus.■ Unified OS for Smartphones and Tablets.■ Faster, smoother■ Improved browser■ Roboto font■ Face unlock.
20. System Architecture
21. System architecture - Bionic libc■ Fast, optimized for ARM■ Lightweight (200 ko), half the size of glibc■ No C++ Exceptions■ No Standard Template Library■ New pthreads implementation [does not support pthread_cancel()]■ Can be exploited directly through NDK (native development kit)BSD licencehttps://github.com/android/platform_bionic
23. System architecture -Media FrameworkBased on OpenCORE and Stagefright (2.2+).
24. System architecture -Media Framework - Base support■ Audio codecs: AAC, MP3, AMR, PCM, MIDI, Ogg Vorbis, FLAC (3.1+)■ Image codecs: JPEG, GIF, BMP, PNG, WebP (4.0+)■ Video codecs: H.263, H.264, MPEG-4 SP, VP8 (2.3.3+)■ Containers: 3GPP, MPEG-4, Matroska (.mkv) (4.0+)■ Manufacturers may add more codecs. Italic = patent-free
25. System architecture - Runtime■ Android uses only the Java language, not the Java platform.■ Dalvik Virtual Machine developed by Google.■ Uses minimal memory.■ Java bytecode is converted to smaller Dalvik bytecode at build time (.dex files).■ Uses Just-In-Time compilation since Android 2.2 for better performance.■ Standard library is based on Apache Harmony open source implementation.
26. Android Open Source Project(AOSP)source.android.com
27. Android Open Source Project(AOSP)Almost... fully open:■ Google publishes source code when they decide it.■ No real interaction with Google teams.■ Not everything is open source: ○ Proprietary binary drivers ○ Google Apps: Google Maps, Gmail, Google Contacts/Calendar/Bookmarks Sync, Google Talk, Play Store (Android Market), Youtube, Weather widget, Text-To-Speech, Voice Search.
28. The SDKiPhone / iPad■ Hardware: Mac (with latest Mac OS X)■ IDE: XCode (free)■ Language: Objective-C.Windows Phone 7 / Windows 8■ Hardware: PC with Microsoft Windows■ IDE: Microsoft Visual Studio (free)■ Language: C#, Visual Basic.
29. The SDKAndroid■ Hardware: Any x86■ IDE: Eclipse, Netbeans, IntelliJ IDEA■ Language: Java.
30. Installing the SDKdeveloper.android.com/sdk
31. Official SDK Tools■ ADB (Android Debug Bridge)■ ARM Emulator (based on QEMU)■ DDMS (Dalvik Debug Monitor Server)■ Proguard (Java optimizer & obfuscator)■ ADT Plugin for Eclipse: ○ Project wizards ○ Java editor with code completion, refactoring, ... ○ Lint integration ○ Visual layout editor+ NDK (Native Development Kit)
32. Official SDK Tools - ADT Plugin
33. Official SDK Tools - ADT Plugin
34. Official SDK Tools - ADT Plugin
35. Official SDK Tools - ADT PluginResources■ By language■ By screen density■ By screen orientation■ By Android version
36. Official SDK Tools - ADT Plugin
37. User Interfacedeveloper.android.com/design
38. Android apps: the building blocksActivities: screens with a life cycle.
39. Android apps: the building blocksFragments: portions of screens with a lifecycle.
40. Android apps: the building blocks■ Background services.■ Intents: IPC mechanism between Activities and/or Services. Action + Data ○ Action: View, Edit, Dial, ..., custom actions ○ Data: URL scheme or any MIME type.■ Everything in the system use intents and is interchangeable.
41. Android apps: the building blocksSpecial apps:■ Live wallpapers■ Widgets
42. DiversityDevelopment challenges:■ Write fast high-level code or use NDK■ Support multiple devices types ○ Phones ○ Tablets ○ Google TVs■ Support multiple Android versions.
43. Diversity - Android versions
44. Diversity - Android versions 99%
45. Diversity - Android versionsUse features of newer Android versionswhile staying compatible with older runtimes:Isolate special functionality in separate classes.MyInterface implementation;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) implementation = new FroYoImplementation();else implementation = new CompatibleImplementation();
46. The upgrade problemManufacturers provide custom user interfaces. Sony Ericsson HTC Sense Timescape Samsung TouchWiz
47. The upgrade problem■ Updating the custom user interface to a new Android version requires a lot of work.■ Manufacturers focus on selling you their latest hardware, not providing support for older hardware.■ On Android, upgrades usually depend on carriers. (The Proximus case)■ Many manufacturers dont do OTA updates.■ Average official support time: ○ 3 years for Apple ○ <= 2 years for most Android phones.
48. The upgrade solution:Installing community ROMsWhy hack ?■ Give choice to the user.■ Remove bloatware.■ Provide longer term support and upgrades.Custom ROMs:Complete firmware (OS, UI, base applications)created by the community.
49. Hacking - Custom ROMsDifferent kinds of custom ROMs:■ Modified original vendor versions■ Ported from another device (experimental)■ Build from source (AOSP)Hack challenges■ Locked hardware (HTC S-ON).■ Binary drivers: Radio (Wifi - Bluetooth - GPS), Graphics, NFC, sometimes accelerometers.
58. Hacking basics - 2. Root access■ Root access allows to perform restricted operations like: ○ writing files on system partition ○ flashing a custom recovery directly from Android OS.■ It requires: ○ Patching or replacing the kernel ○ - or - ○ Use phone-specific kernel exploits (mainly through ADB).
59. Hacking basics - 2. Root access
60. Recap: How to change your ROM1. Go to a forum / wiki and learn the procedure2. Use: a. fastboot b. the vendor flash tool c. a root hack to install a custom recovery on your phone.3. Download a custom ROM as zip file and place it to your SD card/internal storage.4. Reboot your phone in custom recovery and install the ROM. Reboot. Done.