SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Downloaden Sie, um offline zu lesen
An overview of the
Android Mobile Platform
    Brian Gupta & Nathan Freitas
Credits
• Google Android team
• Patrick Brady (Google) IO http://
  sites.google.com/site/io/anatomy--
  physiology-of-an-android
• Jay Freeman (Saurik) - Debian port
• #android
 • JesusFreke /Disconnect
What is Android?
Internal Architecture
The Linux Kernel in
       Android
• Android is based on the Linux kernel
• Android is not Linux
• No native windowing system
• No glibc
• Does not include full set of standard linux
  utilities
• Kernel source at http://git.android.com
Why Linux kernel for
    Android ?
• Great memory and process management
• Great permissions based security model
• Proven driver model
• Support for shared libraries
• It’s already open source
Kernel Enhancements
• Alarm
• Ashmem
• Binder
• Power Management
• Low memory killer
• Kernel debugger
• Logger
Kernel Enhancements:
       Binder
• Driver to facilitate inter-process
  communication
• High performance through shared memory
• Per-process thread pool for processing
  requests
• Reference counting and mapping of object
  references across processes
• Synchronous calls between processes.
Binder in Action
Kernel Enhancements:
 Power Management
• Built on top of standard Linux power
  management
• More aggressive power manager
• Components make requests to keep power
  via “wake locks”
• Supports different types of wake locks
• android.os.PowerManager
Libraries

• Bionic Libc - custom libc implementation
• Function Libraries
• Native Servers
• Hardware Abstraction Libraries
Libraries: Bionic Libc
• Custom libc implementation optimized for
  embedded use
• License BSD - Keeps GPL out of user space
• Size: loads in each process so it needs to be
  small
• Fast: limited CPU power (fast and small
  pthread implementation)
Libraries: WebKit

• Based on the open source WebKit browser
• Renders pages in full (desktop) mode
• Full CSS, JavaScript, DOM, Ajax support
• Single-column and Adaptive view rendering
• Really powerful
Libraries:
    Media Framework

• Based on PacketVideo OpenCORE
  platform
• Supports standard audio, video and stills
• Support for hardware/software codecs
Libraries: SQLite


• Light-weight transactional data store
• Back end for most platform data storage
Libraries: Flingers


• Flingers are native servers that regulate all
  the heavy lifting for System I/O
  • Surface Flinger
  • Audio Flinger
Hardware Abstraction
       Layer
• user space C/C++ library layer
• Standard interface that Android drivers
  need to implement
• Separates Android platform logic from
  hardware interface
• Plugabble : e.g. you can plug in OSS below
Dalvik Virtual Machine
• Android’s custom clean room
  implementation virtual machine
 • provides application portability
 • runs optimized file format (.dex)
 • Java .class/.jar files converted into .dex at
    build time
 • Supports multiple virtual machine
    processes per VM
Core Libraries:
            Overview
• Data Structures
• Utilities
• File access
• Network Access
• Graphics
•   http://developer.android.com/reference/packages.html
Core platform services

• Activity manager
• Package manager
• Window manager
• Resource manager
• Content manager
Hardware Services
• Telephony
• Location
• Bluetooth
• WiFi
• USB
• Sensor(s)
How Android boots
How Android boots:
        Init

• Similar to linux based systems
• At startup the boot loader loads the linux
  kernel and starts the init process
Runtime Walkthrough

• USB Daemon (usbd)
• Android debug bridge
• Debugger Daemon
• Radio interface layer daemon
Runtime Walkthrough (2)


 • Initializes service manager
 • Registers service manager as default
   context manager for Binder service
Init and Zygote
• Init process starts with the zygote process
  •   a nascent process which strats the dalvik VM
      instance

  •   loads classes and listens on socket for request
      to spawn VM’s

  •   Forks on request to create VM instances for
      managed processes

  •   Copy-on-write to maximize re-use and minimize
      footprint
Layer Interaction


•   App -> Runtime Service -> Lib

•   App -> Runtime Service -> Native Service -> Lib

•   App -> Runtime Service -> Native Daemon -> Lib
Android: Open Source
       Project
Open Source Licenses

• GPL - Linux Kernel and modules, bluez
• BSD - Bionic
• Apache - almost everything else
Closed source
             Components
•   HTC RIL (radio interface) library and data files (this is glue between the
    telephony layer in android and the AT/QMI control channels provided via
    GPL kernel drivers)

•   libhgl.so - Qualcomm/ati opengl ES library

•   libqcamera.so - Qualcomm camera library

•   akmd - software to process and adjust compass/accelerometer events

•   Qualcomm h264 codec frontend (does some processing the dsp cannot do)

•   frontend HW accel codec

•   quot;Google appsquot; - Maps, Gmail, etc.
Project Status

• Public vs private branches
• Repo, git and Gerrit
• Cupcake - development branch
 •   http://source.android.com/roadmap/cupcake
Getting the source


• http://source.android.com/download
Setting up your
         machine
• Android development can be done on
 • Ubuntu 32 bit (preferred)
 • Ubuntu AMD64
 • MacOS X
• http://source.android.com/download
Setting up your machine (2)
•   Steps (at a glance)

•   Non Android specific prereqs:

    •    Install git and GPG for your platform

    •    JDK 5.0, update 12 or higher.

    •    The following packages: flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev
         (optional), build-essential, zip, curl.

    •    You might also want Valgrind, a tool that will help you find memory leaks, stack
         corruption, array bounds overflows, etc.

    •    libreadline

•   Install repo script

•   Create a working dir

•   repo init, repo sync

•   Build the code - quot;makequot;
How to get involved
Android Hardware
HTC Dream




  G1 vs ADP1
Netbooks
Ports
• Nokia Internet Tablets
• Sharp Zaurus
• HTC Models
 • Kaiser,Vogue, Polaris, Titan, Raphael &
    Diamond
• OpenMoko FreeRunner
Application
Development
  Nathan Freitas
The Basics

                       with
                     (or w/o)
Android 1.1 SDK r1                Eclipse IDE




         http://developer.android.com
Hello, Android
1)
                 3)



 2)
All the Tools Fit....
Android Emulator: A virtual mobile device that runs on your computer.You use the emulator to design, debug, and test your applications in
an actual Android run-time environment.

Android Development Tools Plugin (for the Eclipse IDE): The ADT plugin adds powerful extensions to the Eclipse integrated
environment, making creating and debugging your Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible
boost in developing Android applications.

Hierarchy Viewer: The Hierarchy Viewer tool allows you to debug and optimize your user interface. It provides a visual representation of your
layout's hierarchy of Views and a magnified inspector of the current display with a pixel grid, so you can get your layout just right.

Draw 9-patch: The Draw 9-patch tool allows you to easily create a NinePatch graphic using a WYSIWYG editor. It also previews stretched
versions of the image, and highlights the area in which content is allowed.

Dalvik Debug Monitor Service (ddms): Integrated with Dalvik, the Android platform's custom VM, this tool lets you manage processes on
an emulator or device and assists in debugging.You can use it to kill processes, select a specific process to debug, generate trace data, view heap
and thread information, take screenshots of the emulator or device, and more.

Android Debug Bridge (adb): The adb tool lets you install your application's .apk files on an emulator or device and access the emulator or
device from a command line. You can also use it to link a standard debugger to application code running on an Android emulator or device.

Android Asset Packaging Tool (aapt): The aapt tool lets you create .apk files containing the binaries and resources of Android
applications.

mksdcard: Helps you create a disk image that you can use with the emulator, to simulate the presence of an external storage card (such as an
SD card).
What’s in an App?
                                        Libraries
                         Other
                                         Service
  Default                  Other
                        Activities
                             Other
             Intents
  Activity               Activities
                           Activities   Content
                                        Providers

                Android Manifest



Drawable     Layouts         Values      Assets
Setting up the Manifest
<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>
<manifest xmlns:android=quot;http://schemas.android.com/apk/res/androidquot;
      package=quot;com.openideals.inaugreportquot;
      android:versionCode=quot;1quot;
      android:versionName=quot;1.0.0quot;>

       <uses-permission android:name=quot;android.permission.ACCESS_FINE_LOCATIONquot; />
    <uses-permission android:name=quot;android.permission.ACCESS_COARSE_LOCATIONquot; />
    <uses-permission android:name=quot;android.permission.INTERNETquot; />
    <uses-permission android:name=quot;android.permission.READ_PHONE_STATEquot;/>



    <application android:icon=quot;@drawable/iconquot; android:label=quot;@string/app_namequot;>
        <activity android:name=quot;.InaugReportMainActivityquot;
                  android:label=quot;@string/app_namequot;>
            <intent-filter>
                <action android:name=quot;android.intent.action.MAINquot; />
                <category android:name=quot;android.intent.category.LAUNCHERquot; />
            </intent-filter>
        </activity>

         <activity android:name=quot;com.openideals.android.geo.LocationFinderActivityquot; android:label=quot;@string/view_location_finderquot;/>
        <activity android:name=quot;.ReportFormActivityquot; android:label=quot;@string/view_report_formquot;/>
         <activity android:name=quot;com.openideals.android.ui.InternalWebViewquot; android:label=quot;@string/internal_web_viewquot; />
          <activity android:name=quot;com.openideals.android.geo.GeoRSSMapViewquot; android:label=quot;@string/geo_map_viewquot; />

         <uses-library android:name=quot;com.google.android.mapsquot; />



    </application>
</manifest>
Config & Code Editing
Laying it All Out
<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>
<ScrollView
xmlns:android=quot;http://schemas.android.com/apk/res/androidquot;
android:id=quot;@+id/scrollReportFormquot;
android:layout_width=quot;fill_parentquot;
android:layout_height=quot;fill_parentquot;
 android:background=quot;@drawable/inaug_report_no_seal_quot;>

<LinearLayout
android:id=quot;@+id/layoutReportFormquot;
android:label=quot;Text Reportquot;
android:layout_width=quot;fill_parentquot;
android:layout_height=quot;wrap_contentquot;
android:orientation=quot;verticalquot; android:gravity=quot;topquot;
android:padding=quot;6.0spquot;>

     <TextView android:id=quot;@+id/labelTitlequot;
               android:layout_width=quot;wrap_contentquot;
               android:layout_height=quot;wrap_contentquot;
               android:text=quot;Title:quot;/>

     <EditText android:id=quot;@+id/entryTitlequot;
               android:layout_width=quot;fill_parentquot;
               android:layout_height=quot;wrap_contentquot;
               android:background=quot;@android:drawable/editbox_backgroundquot;
              />

    <TextView android:id=quot;@+id/labelReportquot;
               android:layout_width=quot;wrap_contentquot;
               android:layout_height=quot;wrap_contentquot;
	       	      	       android:paddingTop=quot;10dpquot;
               android:text=quot;Your Report:quot;/>
Activity: Do Something!
                                                        	
                                                                /** Called when the activity is first created. */
                                                                @Override
package com.openideals.inaugreport;                             public void onCreate(Bundle savedInstanceState) {
                                                                    super.onCreate(savedInstanceState);
import   android.app.Activity;
import   android.app.ProgressDialog;                                 setContentView(R.layout.reportform);
import   android.content.Intent;
import   android.location.Location;                                 ((Button)findViewById(R.id.btnReportFormSubmit)).setOnClickListener(this);
import   android.os.Bundle;                                         ((Button)findViewById(R.id.btnReportFormCancel)).setOnClickListener(this);
import   android.os.Handler;
import   android.util.Log;
import   android.view.View;                                     }
import   android.view.View.OnClickListener;
import   android.widget.ArrayAdapter;
import   android.widget.Button;
import   android.widget.CheckBox;
import   android.widget.Spinner;
                                                                                          	         	     Toast.makeText(getBaseContext(), quot;There was
import   android.widget.TextView;
                                                                                         a problem submitting your report. Wait a second, and then
import   android.widget.Toast;
                                                                                         try again!quot;, Toast.LENGTH_LONG).show();
import com.openideals.android.geo.LocationFinderActivity;
import com.openideals.android.ui.HorizontalSlider;
import com.openideals.android.ui.HorizontalSlider.OnProgressChangeListener;



	
	                                                           private void showMain ()
}                                                           	      {
                                                            	      	      Intent iMain = new Intent(this, LocationFinderActivity.class);

                                                                           startActivity(iMain);
                                                            	          }
“DDMS” Debugger
Launch the Emulator!
OpenIntents.org
Title                                Action                                                     Description
Call                                 android.intent.action.CALL                                Perform a call to someone specified by the data.
Capture an image                     android.media.action.IMAGE_CAPTURE                        An application implementing this intent protocol allows the user
                                                                                               to capture an image.
Check for Update                     org.openintents.intents.CHECK_VERSION                     Preliminary protocol until Market improves update facitilities!
Connect host                         org.theb.ssh.action.CONNECT_HOST                          Connect to a host.
Create shortcut                      android.intent.action.CREATE_SHORTCUT                     Creates a shortcut on the main screen.
Delete data                          android.intent.action.DELETE                              Delete the given data from its container.
Dial a number                        android.intent.action.DIAL                                Dial a number as specified by the data.
Edit data                            android.intent.action.EDIT                                Provide explicit editable access to the given data.

Edit title                           com.android.notepad.action.EDIT_TITLE                     Edit the title of a content.
Encode                               com.google.zxing.client.android.ENCODE                    Encode to barcode and display on screen.
Environmental measurement            com.borntotinker.intent.action.MEASURE                    An open ended intent to collect information from the android
                                                                                               phone's surroundings.
Flickr photo                         com.google.android.photostream.FLICKR_PHOTO               Show a flickr photo.
Flickr stream                        com.google.android.photostream.FLICKR_STREAM              Display a Flickr stream.
Get content                          android.intent.action.GET_CONTENT                         Allow the user to select a particular kind of data and return it.
Insert data                          android.intent.action.INSERT                              Insert an empty item into the given container.
List all applications                android.intent.action.ALL_APPS                            List all available applications.
Main                                 android.intent.action.MAIN                                Start as a main entry point, does not expect to receive data.
Pick data                            android.intent.action.PICK                                Pick an item from the data, returning what was selected.

Pick directory                       org.openintents.action.PICK_DIRECTORY                     Pick a directory (folder) through a file manager.
Pick file                             org.openintents.action.PICK_FILE                          Pick a file through a file manager.
Record sound                         android.provider.MediaStore.RECORD_SOUND                  Start SoundRecorder application to record sound.

Resolve unresolved intents           org.openintents.intents.UNRESOLVED_INTENT           Delegates the user to a selection of possible applications that
                                                                                         can resolve the given intent.
Ringtone picker                      android.intent.action.RINGTONE_PICKER               Show a ringtone picker.
Scan                                 com.google.zxing.client.android.SCAN                Scan a barcode.
Search                               android.intent.action.SEARCH                        Perform a search.
Search book contents                 com.google.zxing.client.android.SEARCH_BOOK_CONTENTSUse Google Book Search to search the contents of the book
                                                                                         provided.
Send a message to the given uri      android.intent.action.SENDTO                        Send a message to someone specified by the data.
Send data to someone                 android.intent.action.SEND                          Deliver some data to someone else.
Send Twitter Message                 com.twidroid.SendTweet                              Send a Twitter/Identi.ca Message thru Twidroid.
Set wallpaper                        android.intent.action.SET_WALLPAPER                 Show settings for choosing wallpaper
Share (through QR code)              com.google.zxing.client.android.SHARE               Display an item as QR code to scan with a phone.

Show about dialog                    org.openintents.action.SHOW_ABOUT_DIALOG                  Show an about dialog to display information about your
                                                                                               application.
Show radar                           com.google.android.radar.SHOW_RADAR                       Display a radar like view centered around the current position
                                                                                               and mark the given location
Tag data                             org.openintents.action.TAG                                Add a tag to the given data.
View data                            android.intent.action.VIEW                                Display the data to the user.
Web search                           android.intent.action.WEB_SEARCH                          Perform a web search.
Geo Report App
GeoMapping Results
PhoneGap “webOS”
•   PhoneGap is a development
    tool that allows web
    developers to take advantage
    of the core features in the
    iPhone, Android, and
    Blackberry SDK using
    JavaScript.
Application
 Development
      Nathan Freitas
 nathan@olivercoady.com
   blog: openideals.com
consulting: olivercoady.com
Phone Hacking
Getting root
By getting root you can update the bootloader and
              install custom firmware
Why custom firmware?
•                                    •
    Include bug fixes from git            add useful kernel modules
    source                               (ext2, cifs, ++) unionfs

•                                    •
    Phone tethering hack                 Phone backup utility

•                                    •
    Multi-touch hack                     Change splash screen

•                                    •
    Install Debian userspace             Custom compiled
                                         firmware
•   busybox + lots of commands
                                     •   added a modified /system/
                                         etc/security/cacerts.bks
•   added a /system/etc/                 file, which contains
    resolv.conf file with the 4.2.2       additional certificates for
    family of DNS servers, to            cacert.org (courtesy of
    allow busybox's ping, wget,          Disconnect)
    etc. to resolve host names
Getting and installing
 custom firmware
Look for the latest JesusFreke custom firmware
Building custom
       firmware
• Jesus Freke's instructions here:
 • http://forum.xda-developers.com/
    showthread.php?t=466174
• Jesus Freke's latest build environment here:
 • http://jf.andblogs.net/2009/02/11/jfv143/
Installing Debian on the G1




      Jay Freeman's (Saurik) instructions:
        http://www.saurikurik.com/id/10
Resources
•                                            •
    FAQ http://tinyurl.com/                      Android New York City:
    androidfaq                                   #androidnyc@irc.freenode
                                                 .net
•   IRC
                                         •   Mailing lists
                                  Text
    •   General Android:
                                             •
        #android@irc.freenode.net                http://code.google.com/
                                                 android/groups.html
    •   Android application
                                             •
        development: #android-                   AndroidNYC Meetup
        dev@irc.freenode.net                     http://www.meetup.com/
                                                 androidnyc
    •   Android hacking:
                                         •
        #android@irc.saurik.net              My email:
                                             Brian.gupta@brandorr.com

Weitere ähnliche Inhalte

Was ist angesagt?

Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies Daniel Oh
 
Dockers zero to hero - (medium version)
Dockers zero to hero - (medium version)Dockers zero to hero - (medium version)
Dockers zero to hero - (medium version)Nicolas De Loof
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017MarcinStachniuk
 
Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Clark Everetts
 
Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Clark Everetts
 
Debugging embedded devices using GDB
Debugging embedded devices using GDBDebugging embedded devices using GDB
Debugging embedded devices using GDBChris Simmonds
 
Faster Container Image Distribution on a Variety of Tools with Lazy Pulling
Faster Container Image Distribution on a Variety of Tools with Lazy PullingFaster Container Image Distribution on a Variety of Tools with Lazy Pulling
Faster Container Image Distribution on a Variety of Tools with Lazy PullingKohei Tokunaga
 
Reverse engineering android apps
Reverse engineering android appsReverse engineering android apps
Reverse engineering android appsPranay Airan
 
Os Koziarsky
Os KoziarskyOs Koziarsky
Os Koziarskyoscon2007
 
DocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM WorldDocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM WorldSchalk Cronjé
 
Introduction of Android Architecture
Introduction of Android ArchitectureIntroduction of Android Architecture
Introduction of Android ArchitectureBin Yang
 
ApacheCon Europe 2016 : CONTAINERS IN ACTION - Transform Application Delivery...
ApacheCon Europe 2016 : CONTAINERS IN ACTION - Transform Application Delivery...ApacheCon Europe 2016 : CONTAINERS IN ACTION - Transform Application Delivery...
ApacheCon Europe 2016 : CONTAINERS IN ACTION - Transform Application Delivery...Daniel Oh
 
Android reverse engineering - Analyzing skype
Android reverse engineering - Analyzing skypeAndroid reverse engineering - Analyzing skype
Android reverse engineering - Analyzing skypeMário Almeida
 
[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container Security[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container SecurityDaniel Oh
 
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Cisco DevNet
 
How to integrate front end tool via gruntjs
How to integrate front end tool via gruntjsHow to integrate front end tool via gruntjs
How to integrate front end tool via gruntjsBo-Yi Wu
 
DVCS in big corporation
DVCS in big corporationDVCS in big corporation
DVCS in big corporationdchaffiol
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 

Was ist angesagt? (20)

Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
 
Dockers zero to hero - (medium version)
Dockers zero to hero - (medium version)Dockers zero to hero - (medium version)
Dockers zero to hero - (medium version)
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 
Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024
 
Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017
 
How to Build & Use OpenCL on OpenCV & Android NDK
How to Build & Use OpenCL on OpenCV & Android NDKHow to Build & Use OpenCL on OpenCV & Android NDK
How to Build & Use OpenCL on OpenCV & Android NDK
 
Debugging embedded devices using GDB
Debugging embedded devices using GDBDebugging embedded devices using GDB
Debugging embedded devices using GDB
 
Faster Container Image Distribution on a Variety of Tools with Lazy Pulling
Faster Container Image Distribution on a Variety of Tools with Lazy PullingFaster Container Image Distribution on a Variety of Tools with Lazy Pulling
Faster Container Image Distribution on a Variety of Tools with Lazy Pulling
 
Reverse engineering android apps
Reverse engineering android appsReverse engineering android apps
Reverse engineering android apps
 
Os Koziarsky
Os KoziarskyOs Koziarsky
Os Koziarsky
 
DocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM WorldDocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM World
 
Introduction of Android Architecture
Introduction of Android ArchitectureIntroduction of Android Architecture
Introduction of Android Architecture
 
ApacheCon Europe 2016 : CONTAINERS IN ACTION - Transform Application Delivery...
ApacheCon Europe 2016 : CONTAINERS IN ACTION - Transform Application Delivery...ApacheCon Europe 2016 : CONTAINERS IN ACTION - Transform Application Delivery...
ApacheCon Europe 2016 : CONTAINERS IN ACTION - Transform Application Delivery...
 
How to Build & Use OpenCL on Android Studio
How to Build & Use OpenCL on Android StudioHow to Build & Use OpenCL on Android Studio
How to Build & Use OpenCL on Android Studio
 
Android reverse engineering - Analyzing skype
Android reverse engineering - Analyzing skypeAndroid reverse engineering - Analyzing skype
Android reverse engineering - Analyzing skype
 
[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container Security[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container Security
 
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
 
How to integrate front end tool via gruntjs
How to integrate front end tool via gruntjsHow to integrate front end tool via gruntjs
How to integrate front end tool via gruntjs
 
DVCS in big corporation
DVCS in big corporationDVCS in big corporation
DVCS in big corporation
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 

Andere mochten auch

Android 电源管理 power_management_(英文版)
Android 电源管理 power_management_(英文版)Android 电源管理 power_management_(英文版)
Android 电源管理 power_management_(英文版)borderj
 
Android System Design And Power Management
Android System Design And Power ManagementAndroid System Design And Power Management
Android System Design And Power ManagementNilay Mishra
 
Android power management, current and future trends
Android power management, current and future trendsAndroid power management, current and future trends
Android power management, current and future trendsSoumya Kanti Datta
 
Android programming -_pushing_the_limits
Android programming -_pushing_the_limitsAndroid programming -_pushing_the_limits
Android programming -_pushing_the_limitsDroidcon Berlin
 
How to Lower Android Power Consumption Without Affecting Performance
How to Lower Android Power Consumption Without Affecting PerformanceHow to Lower Android Power Consumption Without Affecting Performance
How to Lower Android Power Consumption Without Affecting Performancerickschwar
 
Android Platform Overview - Azercell Barama
Android Platform Overview - Azercell BaramaAndroid Platform Overview - Azercell Barama
Android Platform Overview - Azercell BaramaRamin Orujov
 
Android power management
Android power managementAndroid power management
Android power managementJerrin George
 
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...Egor Elizarov
 
Android Accessibility - The missing manual
Android Accessibility - The missing manualAndroid Accessibility - The missing manual
Android Accessibility - The missing manualTed Drake
 
Seminar android presentation
Seminar android presentationSeminar android presentation
Seminar android presentationShruti Maheshwari
 
Android seminar report
Android seminar reportAndroid seminar report
Android seminar reportdgpune
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Android seminar-presentation
Android seminar-presentationAndroid seminar-presentation
Android seminar-presentationconnectshilpa
 

Andere mochten auch (20)

Android 电源管理 power_management_(英文版)
Android 电源管理 power_management_(英文版)Android 电源管理 power_management_(英文版)
Android 电源管理 power_management_(英文版)
 
Android System Design And Power Management
Android System Design And Power ManagementAndroid System Design And Power Management
Android System Design And Power Management
 
Power management android
Power management androidPower management android
Power management android
 
Android power management, current and future trends
Android power management, current and future trendsAndroid power management, current and future trends
Android power management, current and future trends
 
Android programming -_pushing_the_limits
Android programming -_pushing_the_limitsAndroid programming -_pushing_the_limits
Android programming -_pushing_the_limits
 
How to Lower Android Power Consumption Without Affecting Performance
How to Lower Android Power Consumption Without Affecting PerformanceHow to Lower Android Power Consumption Without Affecting Performance
How to Lower Android Power Consumption Without Affecting Performance
 
Android Platform Overview - Azercell Barama
Android Platform Overview - Azercell BaramaAndroid Platform Overview - Azercell Barama
Android Platform Overview - Azercell Barama
 
Android power management
Android power managementAndroid power management
Android power management
 
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
Android internals 09 - Sensors, Power Management, Input subsystem, Data stora...
 
Android Accessibility - The missing manual
Android Accessibility - The missing manualAndroid Accessibility - The missing manual
Android Accessibility - The missing manual
 
Seminar android presentation
Seminar android presentationSeminar android presentation
Seminar android presentation
 
Android seminar report
Android seminar reportAndroid seminar report
Android seminar report
 
Android Platform Architecture
Android Platform ArchitectureAndroid Platform Architecture
Android Platform Architecture
 
Mobile operating systems
Mobile operating systemsMobile operating systems
Mobile operating systems
 
Android IPC Mechanism
Android IPC MechanismAndroid IPC Mechanism
Android IPC Mechanism
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Efficient Android Threading
Efficient Android ThreadingEfficient Android Threading
Efficient Android Threading
 
Power Management from Linux Kernel to Android
Power Management from Linux Kernel to AndroidPower Management from Linux Kernel to Android
Power Management from Linux Kernel to Android
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Android seminar-presentation
Android seminar-presentationAndroid seminar-presentation
Android seminar-presentation
 

Ähnlich wie An Introduction To Android

Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011pundiramit
 
Begining Android Development
Begining Android DevelopmentBegining Android Development
Begining Android DevelopmentHayi Nukman
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsLinaro
 
Droidcon uk2012 androvm
Droidcon uk2012 androvmDroidcon uk2012 androvm
Droidcon uk2012 androvmdfages
 
Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009sullis
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsPositive Hack Days
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Opersys inc.
 
Android Bootcamp
Android   BootcampAndroid   Bootcamp
Android Bootcampahkjsdcsadc
 
Android Overview
Android OverviewAndroid Overview
Android Overviewatomi
 
Lecture02web 140phpapp01
Lecture02web 140phpapp01Lecture02web 140phpapp01
Lecture02web 140phpapp01letuan9999
 
Android Internals and Toolchain
Android Internals and ToolchainAndroid Internals and Toolchain
Android Internals and ToolchainVladimir Kotov
 
Introduction to Android - Mobile Portland
Introduction to Android - Mobile PortlandIntroduction to Android - Mobile Portland
Introduction to Android - Mobile Portlandsullis
 
Android - Application Framework
Android - Application FrameworkAndroid - Application Framework
Android - Application FrameworkYong Heui Cho
 

Ähnlich wie An Introduction To Android (20)

Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011
 
Begining Android Development
Begining Android DevelopmentBegining Android Development
Begining Android Development
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
 
Droidcon uk2012 androvm
Droidcon uk2012 androvmDroidcon uk2012 androvm
Droidcon uk2012 androvm
 
Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android Applications
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
 
Android
Android Android
Android
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Android Bootcamp
Android   BootcampAndroid   Bootcamp
Android Bootcamp
 
Android Overview
Android OverviewAndroid Overview
Android Overview
 
Android
AndroidAndroid
Android
 
Lecture02web 140phpapp01
Lecture02web 140phpapp01Lecture02web 140phpapp01
Lecture02web 140phpapp01
 
Android Internals and Toolchain
Android Internals and ToolchainAndroid Internals and Toolchain
Android Internals and Toolchain
 
01 02 - introduction - adroid stack
01  02 - introduction - adroid stack01  02 - introduction - adroid stack
01 02 - introduction - adroid stack
 
Introduction to Android - Mobile Portland
Introduction to Android - Mobile PortlandIntroduction to Android - Mobile Portland
Introduction to Android - Mobile Portland
 
Android - Application Framework
Android - Application FrameworkAndroid - Application Framework
Android - Application Framework
 
Titanium Desktop Intro
Titanium Desktop IntroTitanium Desktop Intro
Titanium Desktop Intro
 
Android : Deep dive into developing MobileApp using Android
Android : Deep dive into developing MobileApp using AndroidAndroid : Deep dive into developing MobileApp using Android
Android : Deep dive into developing MobileApp using Android
 
PPT Companion to Android
PPT Companion to AndroidPPT Companion to Android
PPT Companion to Android
 

Kürzlich hochgeladen

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 

Kürzlich hochgeladen (20)

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 

An Introduction To Android

  • 1. An overview of the Android Mobile Platform Brian Gupta & Nathan Freitas
  • 2. Credits • Google Android team • Patrick Brady (Google) IO http:// sites.google.com/site/io/anatomy-- physiology-of-an-android • Jay Freeman (Saurik) - Debian port • #android • JesusFreke /Disconnect
  • 5. The Linux Kernel in Android • Android is based on the Linux kernel • Android is not Linux • No native windowing system • No glibc • Does not include full set of standard linux utilities • Kernel source at http://git.android.com
  • 6. Why Linux kernel for Android ? • Great memory and process management • Great permissions based security model • Proven driver model • Support for shared libraries • It’s already open source
  • 7. Kernel Enhancements • Alarm • Ashmem • Binder • Power Management • Low memory killer • Kernel debugger • Logger
  • 8. Kernel Enhancements: Binder • Driver to facilitate inter-process communication • High performance through shared memory • Per-process thread pool for processing requests • Reference counting and mapping of object references across processes • Synchronous calls between processes.
  • 10. Kernel Enhancements: Power Management • Built on top of standard Linux power management • More aggressive power manager • Components make requests to keep power via “wake locks” • Supports different types of wake locks • android.os.PowerManager
  • 11. Libraries • Bionic Libc - custom libc implementation • Function Libraries • Native Servers • Hardware Abstraction Libraries
  • 12. Libraries: Bionic Libc • Custom libc implementation optimized for embedded use • License BSD - Keeps GPL out of user space • Size: loads in each process so it needs to be small • Fast: limited CPU power (fast and small pthread implementation)
  • 13. Libraries: WebKit • Based on the open source WebKit browser • Renders pages in full (desktop) mode • Full CSS, JavaScript, DOM, Ajax support • Single-column and Adaptive view rendering • Really powerful
  • 14. Libraries: Media Framework • Based on PacketVideo OpenCORE platform • Supports standard audio, video and stills • Support for hardware/software codecs
  • 15. Libraries: SQLite • Light-weight transactional data store • Back end for most platform data storage
  • 16. Libraries: Flingers • Flingers are native servers that regulate all the heavy lifting for System I/O • Surface Flinger • Audio Flinger
  • 17. Hardware Abstraction Layer • user space C/C++ library layer • Standard interface that Android drivers need to implement • Separates Android platform logic from hardware interface • Plugabble : e.g. you can plug in OSS below
  • 18. Dalvik Virtual Machine • Android’s custom clean room implementation virtual machine • provides application portability • runs optimized file format (.dex) • Java .class/.jar files converted into .dex at build time • Supports multiple virtual machine processes per VM
  • 19. Core Libraries: Overview • Data Structures • Utilities • File access • Network Access • Graphics • http://developer.android.com/reference/packages.html
  • 20. Core platform services • Activity manager • Package manager • Window manager • Resource manager • Content manager
  • 21. Hardware Services • Telephony • Location • Bluetooth • WiFi • USB • Sensor(s)
  • 23. How Android boots: Init • Similar to linux based systems • At startup the boot loader loads the linux kernel and starts the init process
  • 24. Runtime Walkthrough • USB Daemon (usbd) • Android debug bridge • Debugger Daemon • Radio interface layer daemon
  • 25. Runtime Walkthrough (2) • Initializes service manager • Registers service manager as default context manager for Binder service
  • 26. Init and Zygote • Init process starts with the zygote process • a nascent process which strats the dalvik VM instance • loads classes and listens on socket for request to spawn VM’s • Forks on request to create VM instances for managed processes • Copy-on-write to maximize re-use and minimize footprint
  • 27. Layer Interaction • App -> Runtime Service -> Lib • App -> Runtime Service -> Native Service -> Lib • App -> Runtime Service -> Native Daemon -> Lib
  • 29. Open Source Licenses • GPL - Linux Kernel and modules, bluez • BSD - Bionic • Apache - almost everything else
  • 30. Closed source Components • HTC RIL (radio interface) library and data files (this is glue between the telephony layer in android and the AT/QMI control channels provided via GPL kernel drivers) • libhgl.so - Qualcomm/ati opengl ES library • libqcamera.so - Qualcomm camera library • akmd - software to process and adjust compass/accelerometer events • Qualcomm h264 codec frontend (does some processing the dsp cannot do) • frontend HW accel codec • quot;Google appsquot; - Maps, Gmail, etc.
  • 31. Project Status • Public vs private branches • Repo, git and Gerrit • Cupcake - development branch • http://source.android.com/roadmap/cupcake
  • 32. Getting the source • http://source.android.com/download
  • 33. Setting up your machine • Android development can be done on • Ubuntu 32 bit (preferred) • Ubuntu AMD64 • MacOS X • http://source.android.com/download
  • 34. Setting up your machine (2) • Steps (at a glance) • Non Android specific prereqs: • Install git and GPG for your platform • JDK 5.0, update 12 or higher. • The following packages: flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl. • You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc. • libreadline • Install repo script • Create a working dir • repo init, repo sync • Build the code - quot;makequot;
  • 35. How to get involved
  • 37. HTC Dream G1 vs ADP1
  • 39. Ports • Nokia Internet Tablets • Sharp Zaurus • HTC Models • Kaiser,Vogue, Polaris, Titan, Raphael & Diamond • OpenMoko FreeRunner
  • 41. The Basics with (or w/o) Android 1.1 SDK r1 Eclipse IDE http://developer.android.com
  • 43. All the Tools Fit.... Android Emulator: A virtual mobile device that runs on your computer.You use the emulator to design, debug, and test your applications in an actual Android run-time environment. Android Development Tools Plugin (for the Eclipse IDE): The ADT plugin adds powerful extensions to the Eclipse integrated environment, making creating and debugging your Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications. Hierarchy Viewer: The Hierarchy Viewer tool allows you to debug and optimize your user interface. It provides a visual representation of your layout's hierarchy of Views and a magnified inspector of the current display with a pixel grid, so you can get your layout just right. Draw 9-patch: The Draw 9-patch tool allows you to easily create a NinePatch graphic using a WYSIWYG editor. It also previews stretched versions of the image, and highlights the area in which content is allowed. Dalvik Debug Monitor Service (ddms): Integrated with Dalvik, the Android platform's custom VM, this tool lets you manage processes on an emulator or device and assists in debugging.You can use it to kill processes, select a specific process to debug, generate trace data, view heap and thread information, take screenshots of the emulator or device, and more. Android Debug Bridge (adb): The adb tool lets you install your application's .apk files on an emulator or device and access the emulator or device from a command line. You can also use it to link a standard debugger to application code running on an Android emulator or device. Android Asset Packaging Tool (aapt): The aapt tool lets you create .apk files containing the binaries and resources of Android applications. mksdcard: Helps you create a disk image that you can use with the emulator, to simulate the presence of an external storage card (such as an SD card).
  • 44. What’s in an App? Libraries Other Service Default Other Activities Other Intents Activity Activities Activities Content Providers Android Manifest Drawable Layouts Values Assets
  • 45. Setting up the Manifest <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <manifest xmlns:android=quot;http://schemas.android.com/apk/res/androidquot; package=quot;com.openideals.inaugreportquot; android:versionCode=quot;1quot; android:versionName=quot;1.0.0quot;> <uses-permission android:name=quot;android.permission.ACCESS_FINE_LOCATIONquot; /> <uses-permission android:name=quot;android.permission.ACCESS_COARSE_LOCATIONquot; /> <uses-permission android:name=quot;android.permission.INTERNETquot; /> <uses-permission android:name=quot;android.permission.READ_PHONE_STATEquot;/> <application android:icon=quot;@drawable/iconquot; android:label=quot;@string/app_namequot;> <activity android:name=quot;.InaugReportMainActivityquot; android:label=quot;@string/app_namequot;> <intent-filter> <action android:name=quot;android.intent.action.MAINquot; /> <category android:name=quot;android.intent.category.LAUNCHERquot; /> </intent-filter> </activity> <activity android:name=quot;com.openideals.android.geo.LocationFinderActivityquot; android:label=quot;@string/view_location_finderquot;/> <activity android:name=quot;.ReportFormActivityquot; android:label=quot;@string/view_report_formquot;/> <activity android:name=quot;com.openideals.android.ui.InternalWebViewquot; android:label=quot;@string/internal_web_viewquot; /> <activity android:name=quot;com.openideals.android.geo.GeoRSSMapViewquot; android:label=quot;@string/geo_map_viewquot; /> <uses-library android:name=quot;com.google.android.mapsquot; /> </application> </manifest>
  • 46. Config & Code Editing
  • 47. Laying it All Out <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <ScrollView xmlns:android=quot;http://schemas.android.com/apk/res/androidquot; android:id=quot;@+id/scrollReportFormquot; android:layout_width=quot;fill_parentquot; android:layout_height=quot;fill_parentquot; android:background=quot;@drawable/inaug_report_no_seal_quot;> <LinearLayout android:id=quot;@+id/layoutReportFormquot; android:label=quot;Text Reportquot; android:layout_width=quot;fill_parentquot; android:layout_height=quot;wrap_contentquot; android:orientation=quot;verticalquot; android:gravity=quot;topquot; android:padding=quot;6.0spquot;> <TextView android:id=quot;@+id/labelTitlequot; android:layout_width=quot;wrap_contentquot; android:layout_height=quot;wrap_contentquot; android:text=quot;Title:quot;/> <EditText android:id=quot;@+id/entryTitlequot; android:layout_width=quot;fill_parentquot; android:layout_height=quot;wrap_contentquot; android:background=quot;@android:drawable/editbox_backgroundquot; /> <TextView android:id=quot;@+id/labelReportquot; android:layout_width=quot;wrap_contentquot; android:layout_height=quot;wrap_contentquot; android:paddingTop=quot;10dpquot; android:text=quot;Your Report:quot;/>
  • 48. Activity: Do Something! /** Called when the activity is first created. */ @Override package com.openideals.inaugreport; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); import android.app.Activity; import android.app.ProgressDialog; setContentView(R.layout.reportform); import android.content.Intent; import android.location.Location; ((Button)findViewById(R.id.btnReportFormSubmit)).setOnClickListener(this); import android.os.Bundle; ((Button)findViewById(R.id.btnReportFormCancel)).setOnClickListener(this); import android.os.Handler; import android.util.Log; import android.view.View; } import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.Spinner; Toast.makeText(getBaseContext(), quot;There was import android.widget.TextView; a problem submitting your report. Wait a second, and then import android.widget.Toast; try again!quot;, Toast.LENGTH_LONG).show(); import com.openideals.android.geo.LocationFinderActivity; import com.openideals.android.ui.HorizontalSlider; import com.openideals.android.ui.HorizontalSlider.OnProgressChangeListener; private void showMain () } { Intent iMain = new Intent(this, LocationFinderActivity.class); startActivity(iMain); }
  • 51. OpenIntents.org Title Action Description Call android.intent.action.CALL Perform a call to someone specified by the data. Capture an image android.media.action.IMAGE_CAPTURE An application implementing this intent protocol allows the user to capture an image. Check for Update org.openintents.intents.CHECK_VERSION Preliminary protocol until Market improves update facitilities! Connect host org.theb.ssh.action.CONNECT_HOST Connect to a host. Create shortcut android.intent.action.CREATE_SHORTCUT Creates a shortcut on the main screen. Delete data android.intent.action.DELETE Delete the given data from its container. Dial a number android.intent.action.DIAL Dial a number as specified by the data. Edit data android.intent.action.EDIT Provide explicit editable access to the given data. Edit title com.android.notepad.action.EDIT_TITLE Edit the title of a content. Encode com.google.zxing.client.android.ENCODE Encode to barcode and display on screen. Environmental measurement com.borntotinker.intent.action.MEASURE An open ended intent to collect information from the android phone's surroundings. Flickr photo com.google.android.photostream.FLICKR_PHOTO Show a flickr photo. Flickr stream com.google.android.photostream.FLICKR_STREAM Display a Flickr stream. Get content android.intent.action.GET_CONTENT Allow the user to select a particular kind of data and return it. Insert data android.intent.action.INSERT Insert an empty item into the given container. List all applications android.intent.action.ALL_APPS List all available applications. Main android.intent.action.MAIN Start as a main entry point, does not expect to receive data. Pick data android.intent.action.PICK Pick an item from the data, returning what was selected. Pick directory org.openintents.action.PICK_DIRECTORY Pick a directory (folder) through a file manager. Pick file org.openintents.action.PICK_FILE Pick a file through a file manager. Record sound android.provider.MediaStore.RECORD_SOUND Start SoundRecorder application to record sound. Resolve unresolved intents org.openintents.intents.UNRESOLVED_INTENT Delegates the user to a selection of possible applications that can resolve the given intent. Ringtone picker android.intent.action.RINGTONE_PICKER Show a ringtone picker. Scan com.google.zxing.client.android.SCAN Scan a barcode. Search android.intent.action.SEARCH Perform a search. Search book contents com.google.zxing.client.android.SEARCH_BOOK_CONTENTSUse Google Book Search to search the contents of the book provided. Send a message to the given uri android.intent.action.SENDTO Send a message to someone specified by the data. Send data to someone android.intent.action.SEND Deliver some data to someone else. Send Twitter Message com.twidroid.SendTweet Send a Twitter/Identi.ca Message thru Twidroid. Set wallpaper android.intent.action.SET_WALLPAPER Show settings for choosing wallpaper Share (through QR code) com.google.zxing.client.android.SHARE Display an item as QR code to scan with a phone. Show about dialog org.openintents.action.SHOW_ABOUT_DIALOG Show an about dialog to display information about your application. Show radar com.google.android.radar.SHOW_RADAR Display a radar like view centered around the current position and mark the given location Tag data org.openintents.action.TAG Add a tag to the given data. View data android.intent.action.VIEW Display the data to the user. Web search android.intent.action.WEB_SEARCH Perform a web search.
  • 54. PhoneGap “webOS” • PhoneGap is a development tool that allows web developers to take advantage of the core features in the iPhone, Android, and Blackberry SDK using JavaScript.
  • 55. Application Development Nathan Freitas nathan@olivercoady.com blog: openideals.com consulting: olivercoady.com
  • 57. Getting root By getting root you can update the bootloader and install custom firmware
  • 58. Why custom firmware? • • Include bug fixes from git add useful kernel modules source (ext2, cifs, ++) unionfs • • Phone tethering hack Phone backup utility • • Multi-touch hack Change splash screen • • Install Debian userspace Custom compiled firmware • busybox + lots of commands • added a modified /system/ etc/security/cacerts.bks • added a /system/etc/ file, which contains resolv.conf file with the 4.2.2 additional certificates for family of DNS servers, to cacert.org (courtesy of allow busybox's ping, wget, Disconnect) etc. to resolve host names
  • 59. Getting and installing custom firmware Look for the latest JesusFreke custom firmware
  • 60. Building custom firmware • Jesus Freke's instructions here: • http://forum.xda-developers.com/ showthread.php?t=466174 • Jesus Freke's latest build environment here: • http://jf.andblogs.net/2009/02/11/jfv143/
  • 61. Installing Debian on the G1 Jay Freeman's (Saurik) instructions: http://www.saurikurik.com/id/10
  • 62. Resources • • FAQ http://tinyurl.com/ Android New York City: androidfaq #androidnyc@irc.freenode .net • IRC • Mailing lists Text • General Android: • #android@irc.freenode.net http://code.google.com/ android/groups.html • Android application • development: #android- AndroidNYC Meetup dev@irc.freenode.net http://www.meetup.com/ androidnyc • Android hacking: • #android@irc.saurik.net My email: Brian.gupta@brandorr.com