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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Introduction to Android (Jeudis du libre)

910
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
910
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
45
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

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