Introduction to Android (Jeudis du libre)


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Introduction to Android (Jeudis du libre)

  1. 1. Introduction to Android Christophe Beyls Jeudis du Libre - April 2012
  2. 2. About the speaker● Developer living in Brussels.● Uses various programming languages, mostly Java and C#.● Likes coding, hacking devices, travelling, movies, music, (LOL)cats.● Worked for:
  3. 3. Agenda1. Introduction - Why Android?2. History3. System architecture and its free parts4. The SDK5. The building blocks of an Android app6. Devices hacking and custom ROMs7. Questions & Answers.
  4. 4. Why Android?
  5. 5. Why Android?
  6. 6. Why Android?■ Open architecture.■ Apps may be distributed outside the Google Play Store (Android Market) and installed on any device.
  7. 7. History■ 2003: Android Inc. founded by Andy Rubin.■ 2005: Purchase by Google.■ January 2007: Apple announces the iPhone.■ June 2007: iPhone released.
  8. 8. HistoryNovember 2007Google creates the Open Handset Allianceconsortium with 34 founding members.Manufacturers: HTC, LG, Sony, Motorola,Samsung.Semiconductors: Qualcomm, Intel, nVidia, ...Operators: T-Mobile, Sprint, Telefónica...Software: eBay, Google, Nuance, ...
  9. 9. HistoryNovember 2007: First beta SDK released.
  10. 10. HistoryDecember 2007: Early prototype unveiled.
  11. 11. HistoryFebruary 2008: Apple releases the iPhoneSDK.June 2008: Apple opens the App Store andreleases the iPhone 3G.
  12. 12. HistorySeptember 2008Android 1.0 on HTC Dream (T-Mobile G1).
  13. 13. HistoryFebruary 2009: Android 1.1 (bugfixes).April 2009: Android 1.5 Cupcake (Widgets, virtual keyboard).June 2009: 2 more Android phones released. HTC Magic HTC HeroSeptember 2009: Android 1.6 Donut(Text-to-speech, multiple screen resolutions).
  14. 14. HistoryNovember 2009: Android 2.0 Eclair(HTML5, Contacts + Bluetooth APIs).January 2010: Nexus One released(first Google-branded phone).Android 2.1 (bugfixes, live wallpapers).April 2010: Apple iPad released.May 2010: Android 2.2 FroYo(speed, JIT compiler, push notifications, AdobeFlash support, WiFi hotspot).
  15. 15. History2Q10: Android outsells iOS devices worldwide.
  16. 16. HistoryDecember 2010: Android 2.3 Gingerbreadon Google Nexus S.(Black interface, NFC, native SIP,WebM support)
  17. 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. 18. History3Q11: Android market share doubles comparedto 3Q10 and becomes to most used mobile OS.
  19. 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. 20. System Architecture
  21. 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 licence
  22. 22. System architecture - WebKit■ Developed by KDE, Apple, Nokia, Google and others.■ Android 2.2+ uses faster V8 javascript engine instead of JavascriptCore.■ No differences between Android browser and webviews embedded in apps.
  23. 23. System architecture -Media FrameworkBased on OpenCORE and Stagefright (2.2+).
  24. 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. 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. 26. Android Open Source Project(AOSP)
  27. 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. 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. 29. The SDKAndroid■ Hardware: Any x86■ IDE: Eclipse, Netbeans, IntelliJ IDEA■ Language: Java.
  30. 30. Installing the
  31. 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. 32. Official SDK Tools - ADT Plugin
  33. 33. Official SDK Tools - ADT Plugin
  34. 34. Official SDK Tools - ADT Plugin
  35. 35. Official SDK Tools - ADT PluginResources■ By language■ By screen density■ By screen orientation■ By Android version
  36. 36. Official SDK Tools - ADT Plugin
  37. 37. User
  38. 38. Android apps: the building blocksActivities: screens with a life cycle.
  39. 39. Android apps: the building blocksFragments: portions of screens with a lifecycle.
  40. 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. 41. Android apps: the building blocksSpecial apps:■ Live wallpapers■ Widgets
  42. 42. DiversityDevelopment challenges:■ Write fast high-level code or use NDK■ Support multiple devices types ○ Phones ○ Tablets ○ Google TVs■ Support multiple Android versions.
  43. 43. Diversity - Android versions
  44. 44. Diversity - Android versions 99%
  45. 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. 46. The upgrade problemManufacturers provide custom user interfaces. Sony Ericsson HTC Sense Timescape Samsung TouchWiz
  47. 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. 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. 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.
  50. 50. HackingWarning: voids warranty.Successfully hacked:HTC G1, HTC Magic, HTC Hero, HTC Desire,HTC Legend, Dell Streak, Samsung Galaxy S,Samsung Galaxy Gio, Samsung Galaxy Tab,Acer Liquid, ZTE Blade, Motorola Xoom,Sony Ericsson Xperia X10.
  51. 51. Hacking - The Bible
  52. 52. Hacking - Custom ROMs Cyanogenmod -
  53. 53. Hacking - Custom ROMs MIUI -
  54. 54. Hacking basics■ ROM Bootloader IPL SPL Kernel■ Recovery Recovery RadioBoot modes: System■ Normal OS■ Recovery■ SPL (Flash mode) Data
  55. 55. Hacking basicsCustom ROM:Zip file containing■ system files■ kernel■ optionnally radio.Can be installed easilyusing a custom recovery.
  56. 56. Hacking basics - 1. Flash toolsFastBoot (Google, HTC, Sony Ericsson)■ Android standard command line Flash Tool■ Available in the SDK (Win, Mac, Linux)■ Useful commands:fastboot oem unlockfastboot flash recovery recovery.imgfastboot boot recovery.imgfastboot erase data -w
  57. 57. Hacking basics - 1. Flash tools Samsung ODIN (Windows)
  58. 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. 59. Hacking basics - 2. Root access
  60. 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.
  61. 61. Hacking basics - Custom recoveryClockworkModrecovery
  62. 62. Hacking basics - Custom recovery
  63. 63. Thank you for watching.Questions?Twitter: @BladeCoderWeb: