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
1. Introduction - Why Android?
2. History
3. System architecture and its free parts
4. The SDK
5. The building blocks of an Android
app
6. Devices hacking and custom ROMs
7. Questions & Answers.
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, ...
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).
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.
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.
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
https://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.
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.
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.
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.
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();
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.
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).
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.