• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Android Internals and Toolchain
 

Android Internals and Toolchain

on

  • 2,678 views

 

Statistics

Views

Total Views
2,678
Views on SlideShare
2,678
Embed Views
0

Actions

Likes
6
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

Android Internals and Toolchain Android Internals and Toolchain Presentation Transcript

  • Vladimir Kotov Android Internals and Toolchain 1I. Android Internals
  • Vladimir Kotov Android Internals and Toolchain 2Android platformAndroid is a Linux-based operating system and asoftware stack designed for mobile devicesKey ApplicationsHome, Phone, BrowserApplication FrameworkJava layer system servicesMiddlewaresLibraries, Dalvik VMOperating systemLinux kernel
  • Vladimir Kotov Android Internals and Toolchain 3Android platformDeveloped by Google*2005 – purchased Android Inc2007 – established Open Handset Alliance (OHA)2012 – Oracle v. Google on Java APICompatibilityDefinitionDocumentto certify devicesSDK + toolsto createapplications
  • Vladimir Kotov Android Internals and Toolchain 4Android platformMain hardware platform for Android is ARM● support for x86 from the Android x86 projectAdvanced RISC Machine● 7.9 billion shipped in 2011– 95% smartphones– 90% hard disk drives● Reduced instruction set computing (RISC)● Lower costs, Less heat, Less power usage● Reduced complexity and simpler design● Good interfacing to many devices
  • Vladimir Kotov Android Internals and Toolchain 5Android Anatomy
  • Vladimir Kotov Android Internals and Toolchain 6Android Linux KernelAndroid kernel based on Linux 2.6 and 3.x (Android 4.0)● Why Linux?● Great memory and process management● Permissions-based security model● Proven driver model● Support for shared libraries● Open source
  • Vladimir Kotov Android Internals and Toolchain 7Android Linux KernelAndroid “is not Linux”● Users never see Linux sub system● Not the full set of standard Linux utilities● August 2011, Linus Torvalds - "eventually Android andLinux would come back to a common kernel, but it willprobably not be for four to five years"
  • Vladimir Kotov Android Internals and Toolchain 8Android Linux KernelAndroid patch of kernel enhancements● Power Management● Ashmem● Binder IPC● Low Memory KillerDecember 2011 - Android MainliningProject to put some Android drivers,patches and features back into theLinux kernel
  • Vladimir Kotov Android Internals and Toolchain 9Android Native Libraries
  • Vladimir Kotov Android Internals and Toolchain 10Android Native Libraries● Bionic Libc● Fast and small, license-friendly, optimized for mobile● Function Libraries● WebKit, Media Framework, SQLite● Native Servers● Surface Manager, Audio Manager● Hardware Abstraction Libraries● WiFi, Bluetooth, GPS, Camera
  • Vladimir Kotov Android Internals and Toolchain 11Android Runtime
  • Vladimir Kotov Android Internals and Toolchain 12Android RuntimeOn Android you develop in Java... but Android does not run Java Bytecode !
  • Vladimir Kotov Android Internals and Toolchain 13Android RuntimeConstraintsDesigned for 64M RAMNo swapPhone tech v. DesktopCPU specificOracle JVM problemsMemory HogSlow startupIP licensing restrictionsCustom Virtual Machine. Why?
  • Vladimir Kotov Android Internals and Toolchain 14Android RuntimeDalvik Virtual Machine● Custom VM optimized for mobile devices● Register-based JVM● More efficient and compact● Use memory efficiently● Dalvik Executable Code (.dex)– 30% fewer instructions– 35% fewer code units● Trace JIT compiler (since 2.2)
  • Vladimir Kotov Android Internals and Toolchain 15Android RuntimeAndroid Java = Java language + Dalvik + Apache HarmonyAndroid Java API = Java SE – AWT/Swing + Android APISun-Java = Java language + JVM + JDK
  • Vladimir Kotov Android Internals and Toolchain 16Android RuntimeZygote spawns VM processes● Already has core libraries loaded● When an app is launched, zygote is forked● Fork core libraries are shared with zygote● Solves HotSpot start-up performance and memory problems
  • Vladimir Kotov Android Internals and Toolchain 17Android Runtime
  • Vladimir Kotov Android Internals and Toolchain 18Android Runtime
  • Vladimir Kotov Android Internals and Toolchain 19Android Runtime● Core libraries● Core APIs for Java language (IO, Structures, ...)● Core Platform Services, Application Framework● Activity Manager, Package Manager, Window Manager,Resource Manager, Content Providers, View System● Hardware Services● Telephony, Location, Bluetooth, WiFi, USB, Sensor
  • Vladimir Kotov Android Internals and Toolchain 20II. Android Developer Toolchain
  • Vladimir Kotov Android Internals and Toolchain 21Android offerThe first open* and comprehensive platform for mobiledevices● an operating system, user-interface and applications● a mobile phone without the proprietary obstacles thathave hindered mobile innovation● an open-source development platform
  • Vladimir Kotov Android Internals and Toolchain 22Android offer● Apps are equivalent parts of the phoneusing the same API● Reuse and replacement of applicationcomponents● GSM, EDGE, 3G, 4G, LTE data transfer● Comprehensive location-based APIs● Wi-Fi hardware access and peer-to-peerconnection
  • Vladimir Kotov Android Internals and Toolchain 23Android offer● Full multimedia hardware control, medialibraries● APIs for sensor hardware● Libraries for Bluetooth and NFC● Shared data stores and APIs for contacts,social networking● Background Services, applications, andprocesses● Home-screen Widgets and Live Wallpaper
  • Vladimir Kotov Android Internals and Toolchain 24Android Developer Challenge● A developer challenge Google hold everyyear for Android mobile platform● Demonstrates the capabilities of Androidplatform● Developers submit their apps to one of 10specially-designated ADC categories● Top 20 applications in each category willproceed to the second round● Community vote constituting 40% of thefinal judging score
  • Vladimir Kotov Android Internals and Toolchain 25Accessory Development Kit● RI for building accessoriesfor Android● Source code and hardwarespecifications● ADK 2012 is based on theArduino open sourceelectronics prototypingplatform
  • Install AndroidWhat do we need for Android?• Android SDK• ADT (Android Developer Tools)• AVD (Android Virtual Device)
  • Vladimir Kotov Android Internals and Toolchain 27Android SDK● Android APIsDeveloper access to the Android stack● Development toolsCompile and debug your applications● Android Virtual Device Manager● Emulator● Documentation● Sample code
  • Vladimir Kotov Android Internals and Toolchain 28Android SDK● http://developer.android.com/sdk (Linux, Mac OS X, Windows)● Installation Option1: SDK Tools Only● Initially contains only the basic SDK tools● Need to install the Platform-tools and Android platform(s)● Installation Option2: ADT Bundle● Eclipse + ADT plugin● Android SDK Tools● Android Platform-tools● The latest Android platform● The latest Android system image for the emulator
  • Vladimir Kotov Android Internals and Toolchain 29Android SDKSDK Manager.exe (Windows) v. tools/android (Mac, Linux)
  • Vladimir Kotov Android Internals and Toolchain 30Android SDKSDK packages<sdk>/tools/ Tools for debugging and testing, utilities todevelop an app (sdk manager, ddms, emulator)<sdk>/platform-tools/Platform-dependent tools for developing, supportlatest features of the Android platform and areupdated with new platform (adb, fastboot, aapt)<sdk>/docs/<sdk>/sources/Latest documentation for the Android APIs<sdk>/platforms/ a) SDK Platform for each version of Android,android.jar with a fully compliant Android libraryb) System images for Android emulator<sdk>/add-ons/<sdk>/extras/Special APIs and static libraries you can includein your app sources in order to use powerful APIsthat arent available in the standard platform
  • Vladimir Kotov Android Internals and Toolchain 31Android Development Tools● Eclipse plugin● Professional-grade development environment● Free, open-source, and runs on most major OS● Provides the emulator
  • Vladimir Kotov Android Internals and Toolchain 32Android Development Tools● Tooling● Wizard for creating new project● WYSWYG UI Designer● Code / XML editor● Integrated with● AVD Manager● DDMS
  • Vladimir Kotov Android Internals and Toolchain 33ADT Installation Options● ADT Bundleprovides everything you need to start - Eclipse IDE withbuilt-in ADTEclipse Juno Release● Existing IDEDownload ADT plugin– Help > Install New Software.– Add Repositoryhttps://dl-ssl.google.com/android/eclipse/Configure ADT plugin
  • Vladimir Kotov Android Internals and Toolchain 34Android Emulator● QEMU-based● Same image as on device● Same toolchain to work withdevice or emulator● Mimics all of the hardware andsoftware features of a typicalmobile device● Startup may be slow, try “GraphicsAcceleration” and “Virtual MachineAcceleration”, or use a deviceinstead
  • Vladimir Kotov Android Internals and Toolchain 35Android Virtual Device● Android Virtual Device (AVD) is an emulator configurationto model an actual device by defining hardware andsoftware options● Hardware profile - hardware features (camera,physical, memory)● Mapping to a system image - version of the Androidplatform will run on the virtual device● Dedicated storage area - the devices user data,emulated SD card● Other options - emulator skin, emulated SD card
  • Vladimir Kotov Android Internals and Toolchain 36Develop on Hardware Devices● Use any Android hardware device● Deploy your app to connecteddevices directy from the IDE● Live, on-device debugging, testing,and profiling● Enable debugging over USB● Developer options in the systemSettings
  • Vladimir Kotov Android Internals and Toolchain 37Dalvik Debug Monitor Server(DDMS)● Works with both the emulator and a connected device● Capabilities● Heap usage for a process● Track memory allocation of objects● Work with an emulator or devices file system● Examining thread information● Network Traffic tool (Android 4.0)● LogCat
  • Vladimir Kotov Android Internals and Toolchain 38DEMO
  • Vladimir Kotov Android Internals and Toolchain 39Usefull SDK utilitiesAndroid Debug Bridge(adb)Command line tool to communicate with anemulator instance or device (client, server,daemon)Important commands:- devices – show device list- install – install application file- pull / push – copy files to/from device- logcat - print log data- shell – start remote shell on deviceAndroid DeviceMonitor (monitor)Tool for Android application debugging andanalysis without ADTHierarchy Viewer(hierarchyviewer)Debug and optimize your user interface. Visualrepresentation of the layouts View hierarchyProGuard Obfuscates your code
  • Vladimir Kotov Android Internals and Toolchain 40Native development kit (NDK)● Tools to build and compile your native code forthe device architecture● A way to package your library into the APK file todistribute your application easily● A set of native system headers supported forAndroid platform (libc, libz, liblog, JNI headers)● Documentation, samplesIf the speed and efficiency of C/C++ is required
  • Vladimir Kotov Android Internals and Toolchain 41Application creation cycle
  • Vladimir Kotov Android Internals and Toolchain 42Hello, world ... finallyDEMO