SlideShare a Scribd company logo
Inside Android's UI
Embedded Linux Conference Europe 2012

          Karim Yaghmour
          @karimyaghmour

     karim.yaghmour@opersys.com


                              1
These slides are made available to you under a Creative Commons Share-              Delivered and/or customized by
Alike 3.0 license. The full terms of this license are here:
https://creativecommons.org/licenses/by-sa/3.0/


Attribution requirements and misc., PLEASE READ:
●   This slide must remain as-is in this specific location (slide #2), everything
    else you are free to change; including the logo :-)
●   Use of figures in other documents must feature the below “Originals at”
    URL immediately under that figure and the below copyright notice where
    appropriate.
●   You are free to fill in the “Delivered and/or customized by” space on the
    right as you see fit.
●   You are FORBIDEN from using the default “About” slide as-is or any of its
    contents.
●
    You are FORBIDEN from using any content provided by 3rd parties without
    the EXPLICIT consent from those parties.


(C) Copyright 2012, Opersys inc.
These slides created by: Karim Yaghmour
Originals at: www.opersys.com/community/docs

                                                                                             2
About
●   Author of:




●   Introduced Linux Trace Toolkit in 1999
●   Originated Adeos and relayfs (kernel/relay.c)
●   Training, Custom Dev, Consulting, ...
                                              3
Agenda
●   Android's UI, what's that?
●   Architecture Basics
●   Display Core
●   OpenGL
●   Input Layer
●   Relevant Apps and Services
●   System Startup
●   References and Pointers
                                 4
1. Android's UI, what's that?



                       ●SoC / GPU
                ???    ●Touch input

                       ●LCD

                       ●Keyboard




                           5
1.1. What I'm NOT covering
●   Media layer
●   StageFright
●   Video playback
●   Camera
●   DRM
●   Etc.



                              6
2. Architecture Basics
●   Hardware used to run Android
●   AOSP
●   Binder
●   System Services
●   HAL




                                      7
8
9
10
11
12
/frameworks/base/core/...


                  /frameworks/base/services/java/...
AOSP-provided
    ASL
                  /frameworks/base/services/jni/


                  /hardware/libhardware/

                  /device/[MANUF.]/[DEVICE]
Manuf.-provided   /sdk/emulator/
Manuf. license
                  Kernel or module
Manuf.-provided
 GPL-license




                            13
3. Display Core
●   Display Hardware
●   Classic Linux display stack
●   Display stack in Android
●   Kernel driver
●   HAL definition
●   HAL module
●   Surface Flinger
●   Window Manager
●   Walkthrough
                                       14
3.1. Display Hardware


 MMU




IOMMU




                    15
3.2. Classic Linux display stack




                          16
3.3. Display stack in Android




                         17
18
3.4. Kernel driver
●
    Video memory management
●
    Mode setting
●   Checking of parameters
●   Motorola Xoom:
    ●
        /dev/nvhdcp1
    ●   /dev/nvhost-ctrl
    ●   /dev/nvhost-display
    ●   /dev/nvhost-dsi
    ●
        /dev/nvhost-gr2d
    ●   /dev/nvhost-gr3d
    ●
        /dev/nvhost-isp
    ●
        /dev/nvhost-mpe
    ●   /dev/nvhost-vi
    ●   /dev/nvmap
    ●   /dev/tegra-crypto
    ●
        /dev/tegra_avp
    ●
        /dev/tegra_camera
    ●
        /dev/tegra_fuse
    ●   /dev/tegra_rpc
    ●   /dev/tegra_sema
●   ... whatever hides in hwcomposer HAL module    19
3.5. HAL Definition
●   /hardware/libhardware/include/hardware/hwcomposer.h
●   struct hwc_procs:
    ●   invalidate()
    ●   vsync()
●   struct hwc_composer_device:
    ●   prepare()
    ●   set()
    ●   dump()
    ●   registerProcs()
    ●   query()
    ●   *()
                                                      20
3.6. HAL module
●   Skeleton /hardware/libhardware/modules/hwcomposer.cpp
●   /system/lib/hw/hwcomposer.BOARD.so
●   /system/lib/hw/gralloc.BOARD.so
●   Ex. - Mot Xoom:
    ●   hwcomposer.tegra.so
    ●   gralloc.tegra.so
●   Surface Flinger hook:
    ●   /frameworks/native/services/surfaceflinger/DisplayHardware
        –   HWComposer.cpp
        –   Provides fake vsync if none is provided in HW



                                                            21
3.7. Surface Flinger
●   Actual server:
    ●   /frameworks/native/services/surfaceflinger
●   Client side:
    ●   /frameworks/native/libs/gui
●   Client / Server interface:
    ●   ISurfaceComposerClient.cpp
    ●   ISurfaceComposer.cpp
●   This is NOT an aidl'ed service
●   All communication is manually
    marshalled/unmarshalled
                                                     22
3.8. Window Manager
●   Server side:
    ●   /frameworks/base/services/java/com/android/server/wm/
         –   WindowManagerService.java
         –   Session.java
●   Client side:
    ●   /frameworks/base/core/java/android/view/
         –   WindowManager.java
         –   WindowManagerImpl.java
         –   ViewRootImpl.java
●   Interfaces:
    ●   IWindowManager.aidl
    ●   IWindowSession.aidl
●   Parameters (incl. z-order):
    ●   See WindowManager.java

                                                                23
3.9. Walkthrough
●   Activity Manager relies on Activity Thread
●   AT calls on attach() and makeVisible()
●   makeVisible does wm.addView()
●   vm.addView() - this also called by StatusBar to display itself
    ●   Creates a new ViewRootImpl
    ●   Call on its setView()
●   setView() calls on sWindowSession.add(...)
●   This results in call to WM's addWindow()
●   ViewRootImpl's performTraversals()
    ●   Calls on relayoutWindow()
    ●   Calls to WM session's relayout()
    ●   Call to WM's relayoutWindow()
    ●   Call to createSurfaceLocked()
    ●   new Surface(...)

                                                                     24
4. OpenGL
●   What's OpenGL?
●   What's in a modern-day GPU?
●   Software layers involved
●   Kernel driver
●   EGL libs
●   Native interface
●   Java interface
●   Software GL implementation

                                   25
4.1. What's OpenGL?
●   It's just an API ... nothing but an API ...
●   Check out Wikipedia
●   Multiple versions out
●   “ES” versions for embedded use
●   Up to ES 3.0
●   Android support up to ES 2.0



                                             26
4.2. What's in a modern-day GPU?
●   A tremendous amount of parallel processing units
●   “SIMD”-like instruction set
●   Video decoding/encoding capabilities
●   ...




                                           27
4.3. Software layers involved
●   Kernel driver
●   GL libraries
●   Native GL API
●   Java GL API




                                28
4.4. Kernel driver




            Y
         AR
      ET
    RI
  OP
PR



                       29
4.5. EGL libs
●   /frameworks/base/native/opengl/libs
●   Entry point: /system/lib/libEGL.so
●
    Looks for /system/lib/egl/egl.cfg
●   /system/lib/egl - Mot Xoom:
    ●   egl.cfg
    ●   libEGL_perfhud.so
    ●   libEGL_tegra.so
    ●   libGLES_android.so
    ●   libGLESv1_CM_perfhud.so
    ●   libGLESv1_CM_tegra.so
    ●   libGLESv2_perfhud.so
    ●   libGLESv2_tegra.so
●
    elg.cfg:
               0 0 tegra



                                                30
4.6. Native interface
●   /frameworks/native/opengl/include
    ●   EGL
    ●   ETC1
    ●   GLES
    ●   GLES2
    ●   KHR




                                        31
4.7. Java interface
●   GL libs required by libandroid_runtime.so
●   /frameworks/base/opengl/java/android/opengl:
    ●   ...




                                         32
4.8. Software GL implementation
●   /frameworks/native/opengl/libagl




                                       33
5. Input Layer
●   Kernel side - “std” Linux input layer:
    ●   /dev/input/*
●   No HAL use
●   Native lib:
    ●   libinput
    ●   /frameworks/base/services/input
●   Input Manager Service:
    ●   /frameworks/base/services/java/com/android/server/input
    ●   Started and directly tied to Window Manager
●   Specific config files (see source.android.com)
●   Soft keyboard:
    ●   /frameworks/base/core/java/android/inputmethodservice
●   Input methods:
    ●   /packages/inputmehods
    ●   http://developer.android.com/guide/topics/text/creating-input-method.html

                                                                                    34
6. Relevant Apps and Services
●   Launcher
●   StatusBar
●   Wallpaper Manager Service
●   Notification Service
●   App Widgets




                                35
6.1. Launcher
●   An app like any other
●   See /packages/app/Launcher2




                                  36
6.2. StatusBar
●   A unique app
●   See /frameworks/base/packages/SystemUI
●   Connects to Status Bar Manager and gives an
    interface it can use to call back into Status Bar
●   Can use setIcon() to display icons on the right
●   Provides a CPU usage add-on that renders
    straight on rest of display using higher z-order


                                           37
6.3. Wallpaper Manager Service
●   See
    /frameworks/base/services/java/com/android/se
    rver/WallpaperManagerService.java




                                       38
6.4. Notification Service
●   Toasts
●   Status bar notifications
●   Gets handle to Status Bar Service at
    instantiation
●   Uses handle to communicate with Status Bar




                                           39
6.5. App Widgets
●   See
    /frameworks/base/services/java/com/android/se
    rver/AppWidgetService.java




                                       40
7. System Startup
●   Kernel
●   Init
●   Boot animation
●   Launcher




                                   41
7.1. Boot animation
●   Started by Surface Flinger
●   “bootanim” binary
●   /frameworks/base/cmds/bootanimation
●   Relies on bootanimation.zip w/ PNGs (nothing but)
●   See
    https://github.com/CyanogenMod/android_vendor_cm/tree/jellybean/pre
    built/common/bootanimatino
●   Must contain a desc.txt:
           <width> <height> <fps>
           p <count> <pause> <path>
           p <count> <pause> <path>


                                                        42
8. References and Pointers
●   “Use the source, Luke”
●   Jim Huang's “Android Graphics”
●   Benjamin Zores' “Linux Magazine / France” articles
●   MIPS article on graphics internals:
●   http://developer.mips.com/2012/04/11/learning-about-
    android-graphics-subsystem/
●   Stéphane Marchesin's “Linux Graphics Drivers: an
    Introduction”
●   http://source.android.com/tech/input/index.html


                                                 43
Thank you ...

karim.yaghmour@opersys.com




                         44

More Related Content

What's hot

Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
Nanik Tolaram
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
Nanik Tolaram
 
Android IPC Mechanism
Android IPC MechanismAndroid IPC Mechanism
Android IPC Mechanism
National Cheng Kung University
 
Embedded Android : System Development - Part III
Embedded Android : System Development - Part IIIEmbedded Android : System Development - Part III
Embedded Android : System Development - Part III
Emertxe Information Technologies Pvt Ltd
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
Opersys inc.
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
Opersys inc.
 
Applied Computer Science Concepts in Android
Applied Computer Science Concepts in AndroidApplied Computer Science Concepts in Android
Applied Computer Science Concepts in Android
National Cheng Kung University
 
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...Opersys inc.
 
Explore Android Internals
Explore Android InternalsExplore Android Internals
Explore Android Internals
National Cheng Kung University
 
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
Emertxe Information Technologies Pvt Ltd
 
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardKernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Anne Nicolas
 
Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)
Emertxe Information Technologies Pvt Ltd
 
How To Build Android for ARM Chip boards
How To Build Android for ARM Chip boardsHow To Build Android for ARM Chip boards
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
Linaro
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time OptimizationKan-Ru Chen
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
Emertxe Information Technologies Pvt Ltd
 
Design and Concepts of Android Graphics
Design and Concepts of Android GraphicsDesign and Concepts of Android Graphics
Design and Concepts of Android Graphics
National Cheng Kung University
 
Device Tree Overlay implementation on AOSP 9.0
Device Tree Overlay implementation on AOSP 9.0Device Tree Overlay implementation on AOSP 9.0
Device Tree Overlay implementation on AOSP 9.0
Cheng Wig
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
Emertxe Information Technologies Pvt Ltd
 
Androidのリカバリシステム (Androidのシステムアップデート)
Androidのリカバリシステム (Androidのシステムアップデート)Androidのリカバリシステム (Androidのシステムアップデート)
Androidのリカバリシステム (Androidのシステムアップデート)
l_b__
 

What's hot (20)

Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
 
Android IPC Mechanism
Android IPC MechanismAndroid IPC Mechanism
Android IPC Mechanism
 
Embedded Android : System Development - Part III
Embedded Android : System Development - Part IIIEmbedded Android : System Development - Part III
Embedded Android : System Development - Part III
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
 
Applied Computer Science Concepts in Android
Applied Computer Science Concepts in AndroidApplied Computer Science Concepts in Android
Applied Computer Science Concepts in Android
 
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
 
Explore Android Internals
Explore Android InternalsExplore Android Internals
Explore Android Internals
 
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
 
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardKernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
 
Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)
 
How To Build Android for ARM Chip boards
How To Build Android for ARM Chip boardsHow To Build Android for ARM Chip boards
How To Build Android for ARM Chip boards
 
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
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time Optimization
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
 
Design and Concepts of Android Graphics
Design and Concepts of Android GraphicsDesign and Concepts of Android Graphics
Design and Concepts of Android Graphics
 
Device Tree Overlay implementation on AOSP 9.0
Device Tree Overlay implementation on AOSP 9.0Device Tree Overlay implementation on AOSP 9.0
Device Tree Overlay implementation on AOSP 9.0
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
 
Androidのリカバリシステム (Androidのシステムアップデート)
Androidのリカバリシステム (Androidのシステムアップデート)Androidのリカバリシステム (Androidのシステムアップデート)
Androidのリカバリシステム (Androidのシステムアップデート)
 

Viewers also liked

Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC Europe
Opersys inc.
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIOpersys inc.
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
Opersys inc.
 
Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013
Opersys inc.
 
Android UI System
Android UI SystemAndroid UI System
Android UI System
Kan-Han (John) Lu
 
KillrChat: Building Your First Application in Apache Cassandra (English)
KillrChat: Building Your First Application in Apache Cassandra (English)KillrChat: Building Your First Application in Apache Cassandra (English)
KillrChat: Building Your First Application in Apache Cassandra (English)
DataStax Academy
 
Android Ui
Android UiAndroid Ui
Android Ui
Jetti Chowdary
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
Opersys inc.
 
안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 threadDaeHee Jang
 
04 안드로이드 응용프로그램의 구조
04 안드로이드 응용프로그램의 구조04 안드로이드 응용프로그램의 구조
04 안드로이드 응용프로그램의 구조Wanbok Choi
 
Jag201610 API Diffで見るNougat
Jag201610   API Diffで見るNougat Jag201610   API Diffで見るNougat
Jag201610 API Diffで見るNougat
mokelab
 
20161026 What is Nougat
20161026  What is Nougat20161026  What is Nougat
20161026 What is Nougat
Kenichi Ohwada
 
Layouts in android
Layouts in androidLayouts in android
Layouts in android
Durai S
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
l_b__
 
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 HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacyAndroid HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacy
Jollen Chen
 
Accessing Hardware on Android
Accessing Hardware on AndroidAccessing Hardware on Android
Accessing Hardware on Android
Gary Bisson
 
Pythonで画面付きのアプリを作成する
Pythonで画面付きのアプリを作成するPythonで画面付きのアプリを作成する
Pythonで画面付きのアプリを作成する
Jun Okazaki
 
mobile Os
mobile Osmobile Os
mobile Os
Abhishek Singh
 

Viewers also liked (20)

Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC Europe
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013Android Internals at Linaro Connect Asia 2013
Android Internals at Linaro Connect Asia 2013
 
Android UI System
Android UI SystemAndroid UI System
Android UI System
 
KillrChat: Building Your First Application in Apache Cassandra (English)
KillrChat: Building Your First Application in Apache Cassandra (English)KillrChat: Building Your First Application in Apache Cassandra (English)
KillrChat: Building Your First Application in Apache Cassandra (English)
 
Android Ui
Android UiAndroid Ui
Android Ui
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread
 
04 안드로이드 응용프로그램의 구조
04 안드로이드 응용프로그램의 구조04 안드로이드 응용프로그램의 구조
04 안드로이드 응용프로그램의 구조
 
Jag201610 API Diffで見るNougat
Jag201610   API Diffで見るNougat Jag201610   API Diffで見るNougat
Jag201610 API Diffで見るNougat
 
20161026 What is Nougat
20161026  What is Nougat20161026  What is Nougat
20161026 What is Nougat
 
Layouts in android
Layouts in androidLayouts in android
Layouts in android
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
 
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 HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacyAndroid HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacy
 
Accessing Hardware on Android
Accessing Hardware on AndroidAccessing Hardware on Android
Accessing Hardware on Android
 
Pythonで画面付きのアプリを作成する
Pythonで画面付きのアプリを作成するPythonで画面付きのアプリを作成する
Pythonで画面付きのアプリを作成する
 
Android概要資料
Android概要資料Android概要資料
Android概要資料
 
mobile Os
mobile Osmobile Os
mobile Os
 

Similar to Inside Android's UI

Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013
Opersys inc.
 
Inside Android's UI at AnDevCon VI
Inside Android's UI at AnDevCon VIInside Android's UI at AnDevCon VI
Inside Android's UI at AnDevCon VIOpersys inc.
 
Inside Android's UI at AnDevCon V
Inside Android's UI at AnDevCon VInside Android's UI at AnDevCon V
Inside Android's UI at AnDevCon VOpersys inc.
 
Inside Android's UI at AnDevCon IV
Inside Android's UI at AnDevCon IVInside Android's UI at AnDevCon IV
Inside Android's UI at AnDevCon IVOpersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3
Opersys inc.
 
Android Internals
Android InternalsAndroid Internals
Android Internals
Opersys inc.
 
Android Platform Debugging & Development
Android Platform Debugging & Development Android Platform Debugging & Development
Android Platform Debugging & Development
Qualcomm Developer Network
 
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
Android Variants, Hacks, Tricks and Resources presented at AnDevConIIAndroid Variants, Hacks, Tricks and Resources presented at AnDevConII
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
Opersys inc.
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux Heritage
Opersys inc.
 
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Opersys inc.
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UI
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVLeveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVOpersys inc.
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UI
Opersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
Opersys inc.
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UI
Opersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
Opersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
Opersys inc.
 
Android Internals
Android InternalsAndroid Internals
Android Internals
Opersys inc.
 
Leveraging Android's Linux Heritage at ELC-E 2011
Leveraging Android's Linux Heritage at ELC-E 2011Leveraging Android's Linux Heritage at ELC-E 2011
Leveraging Android's Linux Heritage at ELC-E 2011
Opersys inc.
 
Headless Android
Headless AndroidHeadless Android
Headless Android
Opersys inc.
 

Similar to Inside Android's UI (20)

Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013
 
Inside Android's UI at AnDevCon VI
Inside Android's UI at AnDevCon VIInside Android's UI at AnDevCon VI
Inside Android's UI at AnDevCon VI
 
Inside Android's UI at AnDevCon V
Inside Android's UI at AnDevCon VInside Android's UI at AnDevCon V
Inside Android's UI at AnDevCon V
 
Inside Android's UI at AnDevCon IV
Inside Android's UI at AnDevCon IVInside Android's UI at AnDevCon IV
Inside Android's UI at AnDevCon IV
 
Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Android Platform Debugging & Development
Android Platform Debugging & Development Android Platform Debugging & Development
Android Platform Debugging & Development
 
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
Android Variants, Hacks, Tricks and Resources presented at AnDevConIIAndroid Variants, Hacks, Tricks and Resources presented at AnDevConII
Android Variants, Hacks, Tricks and Resources presented at AnDevConII
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux Heritage
 
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UI
 
Leveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVLeveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IV
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UI
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UI
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Leveraging Android's Linux Heritage at ELC-E 2011
Leveraging Android's Linux Heritage at ELC-E 2011Leveraging Android's Linux Heritage at ELC-E 2011
Leveraging Android's Linux Heritage at ELC-E 2011
 
Headless Android
Headless AndroidHeadless Android
Headless Android
 

More from Opersys inc.

Android Automotive
Android AutomotiveAndroid Automotive
Android Automotive
Opersys inc.
 
Android 10 Internals Update
Android 10 Internals UpdateAndroid 10 Internals Update
Android 10 Internals Update
Opersys inc.
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security Internals
Opersys inc.
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with Pie
Opersys inc.
 
Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?
Opersys inc.
 
Embedded Android Workshop with Oreo
Embedded Android Workshop with OreoEmbedded Android Workshop with Oreo
Embedded Android Workshop with Oreo
Opersys inc.
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
Opersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
Opersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
Opersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
Opersys inc.
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoT
Opersys inc.
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
Opersys inc.
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
Opersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
Opersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
Opersys inc.
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
Opersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
Opersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
Opersys inc.
 
Project Ara
Project AraProject Ara
Project Ara
Opersys inc.
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
Opersys inc.
 

More from Opersys inc. (20)

Android Automotive
Android AutomotiveAndroid Automotive
Android Automotive
 
Android 10 Internals Update
Android 10 Internals UpdateAndroid 10 Internals Update
Android 10 Internals Update
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security Internals
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with Pie
 
Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?
 
Embedded Android Workshop with Oreo
Embedded Android Workshop with OreoEmbedded Android Workshop with Oreo
Embedded Android Workshop with Oreo
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoT
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
 
Project Ara
Project AraProject Ara
Project Ara
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 

Recently uploaded

Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 

Recently uploaded (20)

Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 

Inside Android's UI

  • 1. Inside Android's UI Embedded Linux Conference Europe 2012 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com 1
  • 2. These slides are made available to you under a Creative Commons Share- Delivered and/or customized by Alike 3.0 license. The full terms of this license are here: https://creativecommons.org/licenses/by-sa/3.0/ Attribution requirements and misc., PLEASE READ: ● This slide must remain as-is in this specific location (slide #2), everything else you are free to change; including the logo :-) ● Use of figures in other documents must feature the below “Originals at” URL immediately under that figure and the below copyright notice where appropriate. ● You are free to fill in the “Delivered and/or customized by” space on the right as you see fit. ● You are FORBIDEN from using the default “About” slide as-is or any of its contents. ● You are FORBIDEN from using any content provided by 3rd parties without the EXPLICIT consent from those parties. (C) Copyright 2012, Opersys inc. These slides created by: Karim Yaghmour Originals at: www.opersys.com/community/docs 2
  • 3. About ● Author of: ● Introduced Linux Trace Toolkit in 1999 ● Originated Adeos and relayfs (kernel/relay.c) ● Training, Custom Dev, Consulting, ... 3
  • 4. Agenda ● Android's UI, what's that? ● Architecture Basics ● Display Core ● OpenGL ● Input Layer ● Relevant Apps and Services ● System Startup ● References and Pointers 4
  • 5. 1. Android's UI, what's that? ●SoC / GPU ??? ●Touch input ●LCD ●Keyboard 5
  • 6. 1.1. What I'm NOT covering ● Media layer ● StageFright ● Video playback ● Camera ● DRM ● Etc. 6
  • 7. 2. Architecture Basics ● Hardware used to run Android ● AOSP ● Binder ● System Services ● HAL 7
  • 8. 8
  • 9. 9
  • 10. 10
  • 11. 11
  • 12. 12
  • 13. /frameworks/base/core/... /frameworks/base/services/java/... AOSP-provided ASL /frameworks/base/services/jni/ /hardware/libhardware/ /device/[MANUF.]/[DEVICE] Manuf.-provided /sdk/emulator/ Manuf. license Kernel or module Manuf.-provided GPL-license 13
  • 14. 3. Display Core ● Display Hardware ● Classic Linux display stack ● Display stack in Android ● Kernel driver ● HAL definition ● HAL module ● Surface Flinger ● Window Manager ● Walkthrough 14
  • 15. 3.1. Display Hardware MMU IOMMU 15
  • 16. 3.2. Classic Linux display stack 16
  • 17. 3.3. Display stack in Android 17
  • 18. 18
  • 19. 3.4. Kernel driver ● Video memory management ● Mode setting ● Checking of parameters ● Motorola Xoom: ● /dev/nvhdcp1 ● /dev/nvhost-ctrl ● /dev/nvhost-display ● /dev/nvhost-dsi ● /dev/nvhost-gr2d ● /dev/nvhost-gr3d ● /dev/nvhost-isp ● /dev/nvhost-mpe ● /dev/nvhost-vi ● /dev/nvmap ● /dev/tegra-crypto ● /dev/tegra_avp ● /dev/tegra_camera ● /dev/tegra_fuse ● /dev/tegra_rpc ● /dev/tegra_sema ● ... whatever hides in hwcomposer HAL module 19
  • 20. 3.5. HAL Definition ● /hardware/libhardware/include/hardware/hwcomposer.h ● struct hwc_procs: ● invalidate() ● vsync() ● struct hwc_composer_device: ● prepare() ● set() ● dump() ● registerProcs() ● query() ● *() 20
  • 21. 3.6. HAL module ● Skeleton /hardware/libhardware/modules/hwcomposer.cpp ● /system/lib/hw/hwcomposer.BOARD.so ● /system/lib/hw/gralloc.BOARD.so ● Ex. - Mot Xoom: ● hwcomposer.tegra.so ● gralloc.tegra.so ● Surface Flinger hook: ● /frameworks/native/services/surfaceflinger/DisplayHardware – HWComposer.cpp – Provides fake vsync if none is provided in HW 21
  • 22. 3.7. Surface Flinger ● Actual server: ● /frameworks/native/services/surfaceflinger ● Client side: ● /frameworks/native/libs/gui ● Client / Server interface: ● ISurfaceComposerClient.cpp ● ISurfaceComposer.cpp ● This is NOT an aidl'ed service ● All communication is manually marshalled/unmarshalled 22
  • 23. 3.8. Window Manager ● Server side: ● /frameworks/base/services/java/com/android/server/wm/ – WindowManagerService.java – Session.java ● Client side: ● /frameworks/base/core/java/android/view/ – WindowManager.java – WindowManagerImpl.java – ViewRootImpl.java ● Interfaces: ● IWindowManager.aidl ● IWindowSession.aidl ● Parameters (incl. z-order): ● See WindowManager.java 23
  • 24. 3.9. Walkthrough ● Activity Manager relies on Activity Thread ● AT calls on attach() and makeVisible() ● makeVisible does wm.addView() ● vm.addView() - this also called by StatusBar to display itself ● Creates a new ViewRootImpl ● Call on its setView() ● setView() calls on sWindowSession.add(...) ● This results in call to WM's addWindow() ● ViewRootImpl's performTraversals() ● Calls on relayoutWindow() ● Calls to WM session's relayout() ● Call to WM's relayoutWindow() ● Call to createSurfaceLocked() ● new Surface(...) 24
  • 25. 4. OpenGL ● What's OpenGL? ● What's in a modern-day GPU? ● Software layers involved ● Kernel driver ● EGL libs ● Native interface ● Java interface ● Software GL implementation 25
  • 26. 4.1. What's OpenGL? ● It's just an API ... nothing but an API ... ● Check out Wikipedia ● Multiple versions out ● “ES” versions for embedded use ● Up to ES 3.0 ● Android support up to ES 2.0 26
  • 27. 4.2. What's in a modern-day GPU? ● A tremendous amount of parallel processing units ● “SIMD”-like instruction set ● Video decoding/encoding capabilities ● ... 27
  • 28. 4.3. Software layers involved ● Kernel driver ● GL libraries ● Native GL API ● Java GL API 28
  • 29. 4.4. Kernel driver Y AR ET RI OP PR 29
  • 30. 4.5. EGL libs ● /frameworks/base/native/opengl/libs ● Entry point: /system/lib/libEGL.so ● Looks for /system/lib/egl/egl.cfg ● /system/lib/egl - Mot Xoom: ● egl.cfg ● libEGL_perfhud.so ● libEGL_tegra.so ● libGLES_android.so ● libGLESv1_CM_perfhud.so ● libGLESv1_CM_tegra.so ● libGLESv2_perfhud.so ● libGLESv2_tegra.so ● elg.cfg: 0 0 tegra 30
  • 31. 4.6. Native interface ● /frameworks/native/opengl/include ● EGL ● ETC1 ● GLES ● GLES2 ● KHR 31
  • 32. 4.7. Java interface ● GL libs required by libandroid_runtime.so ● /frameworks/base/opengl/java/android/opengl: ● ... 32
  • 33. 4.8. Software GL implementation ● /frameworks/native/opengl/libagl 33
  • 34. 5. Input Layer ● Kernel side - “std” Linux input layer: ● /dev/input/* ● No HAL use ● Native lib: ● libinput ● /frameworks/base/services/input ● Input Manager Service: ● /frameworks/base/services/java/com/android/server/input ● Started and directly tied to Window Manager ● Specific config files (see source.android.com) ● Soft keyboard: ● /frameworks/base/core/java/android/inputmethodservice ● Input methods: ● /packages/inputmehods ● http://developer.android.com/guide/topics/text/creating-input-method.html 34
  • 35. 6. Relevant Apps and Services ● Launcher ● StatusBar ● Wallpaper Manager Service ● Notification Service ● App Widgets 35
  • 36. 6.1. Launcher ● An app like any other ● See /packages/app/Launcher2 36
  • 37. 6.2. StatusBar ● A unique app ● See /frameworks/base/packages/SystemUI ● Connects to Status Bar Manager and gives an interface it can use to call back into Status Bar ● Can use setIcon() to display icons on the right ● Provides a CPU usage add-on that renders straight on rest of display using higher z-order 37
  • 38. 6.3. Wallpaper Manager Service ● See /frameworks/base/services/java/com/android/se rver/WallpaperManagerService.java 38
  • 39. 6.4. Notification Service ● Toasts ● Status bar notifications ● Gets handle to Status Bar Service at instantiation ● Uses handle to communicate with Status Bar 39
  • 40. 6.5. App Widgets ● See /frameworks/base/services/java/com/android/se rver/AppWidgetService.java 40
  • 41. 7. System Startup ● Kernel ● Init ● Boot animation ● Launcher 41
  • 42. 7.1. Boot animation ● Started by Surface Flinger ● “bootanim” binary ● /frameworks/base/cmds/bootanimation ● Relies on bootanimation.zip w/ PNGs (nothing but) ● See https://github.com/CyanogenMod/android_vendor_cm/tree/jellybean/pre built/common/bootanimatino ● Must contain a desc.txt: <width> <height> <fps> p <count> <pause> <path> p <count> <pause> <path> 42
  • 43. 8. References and Pointers ● “Use the source, Luke” ● Jim Huang's “Android Graphics” ● Benjamin Zores' “Linux Magazine / France” articles ● MIPS article on graphics internals: ● http://developer.mips.com/2012/04/11/learning-about- android-graphics-subsystem/ ● Stéphane Marchesin's “Linux Graphics Drivers: an Introduction” ● http://source.android.com/tech/input/index.html 43