Introduction to Android (Jeudis du libre)
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Introduction to Android (Jeudis du libre)

on

  • 1,065 views

 

Statistics

Views

Total Views
1,065
Views on SlideShare
899
Embed Views
166

Actions

Likes
0
Downloads
42
Comments
0

3 Embeds 166

http://www.digitalia.be 152
http://www.linkedin.com 7
https://www.linkedin.com 7

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introduction to Android (Jeudis du libre) Presentation Transcript

  • 1. Introduction to Android Christophe Beyls Jeudis du Libre - April 2012
  • 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. 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. Why Android?
  • 5. Why Android?
  • 6. Why Android?■ Open architecture.■ Apps may be distributed outside the Google Play Store (Android Market) and installed on any device.
  • 7. History■ 2003: Android Inc. founded by Andy Rubin.■ 2005: Purchase by Google.■ January 2007: Apple announces the iPhone.■ June 2007: iPhone released.
  • 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. HistoryNovember 2007: First beta SDK released.
  • 10. HistoryDecember 2007: Early prototype unveiled.
  • 11. HistoryFebruary 2008: Apple releases the iPhoneSDK.June 2008: Apple opens the App Store andreleases the iPhone 3G.
  • 12. HistorySeptember 2008Android 1.0 on HTC Dream (T-Mobile G1).
  • 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. 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. History2Q10: Android outsells iOS devices worldwide.
  • 16. HistoryDecember 2010: Android 2.3 Gingerbreadon Google Nexus S.(Black interface, NFC, native SIP,WebM support)
  • 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
  • 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. 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.
  • 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. Hacking - The Bible forum.xda-developers.com
  • 52. Hacking - Custom ROMs Cyanogenmod - www.cyanogenmod.com
  • 53. Hacking - Custom ROMs MIUI - miuiandroid.com
  • 54. Hacking basics■ ROM Bootloader IPL SPL Kernel■ Recovery Recovery RadioBoot modes: System■ Normal OS■ Recovery■ SPL (Flash mode) Data
  • 55. Hacking basicsCustom ROM:Zip file containing■ system files■ kernel■ optionnally radio.Can be installed easilyusing a custom recovery.
  • 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. Hacking basics - 1. Flash tools Samsung ODIN (Windows)
  • 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.
  • 61. Hacking basics - Custom recoveryClockworkModrecovery
  • 62. Hacking basics - Custom recovery
  • 63. Thank you for watching.Questions?Twitter: @BladeCoderWeb: digitalia.be