Introduction to Android. Christophe Beyls Jeudis du Libre - April 2012

Size: px
Start display at page:

Download "Introduction to Android. Christophe Beyls Jeudis du Libre - April 2012"

Transcription

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 Agenda Introduction - Why Android? History System architecture and its free parts The SDK The building blocks of an Android app 6. Devices hacking and custom ROMs 7. 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 History November 2007 Google creates the Open Handset Alliance consortium 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 History November 2007: First beta SDK released.

10 History December 2007: Early prototype unveiled.

11 History February 2008: Apple releases the iphone SDK. June 2008: Apple opens the App Store and releases the iphone 3G.

12 History September 2008 Android 1.0 on HTC Dream (T-Mobile G1).

13 History February 2009: Android 1.1 (bugfixes). April 2009: Android 1.5 Cupcake (Widgets, virtual keyboard). June 2009: 2 more Android phones released. HTC Magic HTC Hero September 2009: Android 1.6 Donut (Text-to-speech, multiple screen resolutions).

14 History November 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, Adobe Flash support, WiFi hotspot).

15 History 2Q10: Android outsells ios devices worldwide.

16 History December 2010: Android 2.3 Gingerbread on Google Nexus S. (Black interface, NFC, native SIP, WebM support)

17 History February 2011: Android 3.0 Honeycomb on the first Android tablet: the Motorola Xoom. New UI: Holo theme, Fragments, Action Bar Full 2D hardware acceleration.

18 History 3Q11: Android market share doubles compared to 3Q10 and becomes to most used mobile OS.

19 History November 2011: Android 4.0 Ice Cream Sandwich on 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 licence

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 Framework Based 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 SDK iphone / 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 SDK Android Hardware: Any x86 IDE: Eclipse, Netbeans, IntelliJ IDEA Language: Java.

30 Installing the SDK developer.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 Plugin Resources By language By screen density By screen orientation By Android version

36 Official SDK Tools - ADT Plugin

37 User Interface developer.android.com/design

38 Android apps: the building blocks Activities: screens with a life cycle.

39 Android apps: the building blocks Fragments: portions of screens with a life cycle.

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 blocks Special apps: Live wallpapers Widgets

42 Diversity Development 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 versions Use features of newer Android versions while 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 problem Manufacturers provide custom user interfaces. HTC Sense Sony Ericsson 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 don't do OTA updates. Average official support time: 3 years for Apple <= 2 years for most Android phones.

48 The upgrade solution: Installing community ROMs Why 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 ROMs Different 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 Hacking Warning: 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 -

53 Hacking - Custom ROMs MIUI - miuiandroid.com

54 Hacking basics ROM Recovery IPL Bootloader SPL Kernel Recovery Radio Boot modes: Normal OS Recovery SPL (Flash mode) System Data

55 Hacking basics Custom ROM: Zip file containing system files kernel optionnally radio. Can be installed easily using a custom recovery.

56 Hacking basics - 1. Flash tools FastBoot (Google, HTC, Sony Ericsson) Android standard command line Flash Tool Available in the SDK (Win, Mac, Linux) Useful commands: fastboot fastboot fastboot fastboot oem unlock flash recovery recovery.img boot recovery.img 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 ROM 1. Go to a forum / wiki and learn the procedure 2. 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 recovery ClockworkMod recovery

62 Hacking basics - Custom recovery

63 Thank you for watching. Questions? Web: digitalia.be