SlideShare a Scribd company logo
1 of 26
Download to read offline
Headless Android
 Android Builders Summit 2012

      Karim Yaghmour
      @karimyaghmour

 karim.yaghmour@opersys.com


                           1
These slides are made available to you under a Creative Commons          Delivered and/or customized by
Share-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.


(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
+                     =


“And then GNU came back for revenge ...” -- Tarantino's sequel

                                                4
Agenda
●   Why?
●   What is it exactly?
●   How to get there?
●   What's in there anyway?
●   Demo




                               5
1. Why?
●   Took me a long time to wrap my head around
    ●   “Why don't you just use embedded Linux?”



●   What's “Embedded Linux” anyway?




                                             6
1.1. What's “Embedded Linux”?
●   A set of ad-hoc methods to package the Linux kernel with a
    (minimal) filesystem.
●   FS content “to be determined” case-by-case
●   APIs are specific to each device/build
●   “Core software”:
    ●   BusyBox
    ●   U-Boot
    ●   GNU Toolchain
●   Your flavor of:
    ●   glibc or uClibc or eglibc
    ●   yocto or buildroot or eldk or ltib or ptxdist or ...
●   No serious UX framework
                                                               7
1.2. What does Android offer?
●   ... apart from its increasingly well known UX ...
●   Fully-integrated Eclipse IDE
●   SDK/NDK
●   ADB
●   Fastboot
●   Published, well-known, and very rich APIs
●   A large and growing developer community
●   And still we can use the usual suspects:
    ●   GNU toolchain, BusyBox, u- boot, glibc, ...


An actual standardized dev. env. across all product lines
                                                        8
2. What is “Headless Android” exactly?




                             9
2.1. Possibilities
●   No Java:
    ●   TinyAndroid:
         $ BUILD_TINY_ANDROID=true make ­j4
    ●   AOSP w/ custom products .mk file
●   The full-blown stack without:
    ●   SurfaceFlinger
    ●   WindowManager
    ●   WallpaperService
    ●   InputMethodManager
                                           10
2.2. Tiny Android
●   3MB filesystem
●   Minimal root fs
●   init
●   toolbox + shell
●   adb
●   bionic + utility libs
●   No “system/framework/”
●   No “system/app”
                                     11
2.3. AOSP w/ custom product .mk
●   Have a look at:
    ●     build/target/product/*.mk
●   Create your own device under “/device” and
    have fun
●   Disable zygote at startup
●   Remove all apks
●   ...


                                       12
3. How do we get the full stack?




             ?
                          13
3.1. System Services




                   14
3.2. Challenges
●   Integration
    ●   System Services are tightly coupled
    ●   House of cards
●   Dependencies are deeply buried in internals
●   There are ~100KLOC of System Services
●   Framework expects all System Services
●   Rendering/Display are central tenants of arch.


                                              15
3.3. Android's display architecture




                            16
3.4. Attempt #1
●   Target: Kill SurfaceFlinger and WindowManager
●   Result: FAIL




                                       17
3.5. Attempt #2
●   Target: Kill link between SF and FB
●   Result: FAIL




                                          18
3.6. Attempt #3
●   Target: Use VirtualFB
●   Result: FAIL




                                     19
3.7. Attempt #4
●   Target: Kill SurfaceFlinger and WindowManager
●   Result: SUCCESS!!!




                                       20
3.8. How?
●   Disable:
    ●   SurfaceFlinger
    ●   WindowManager
    ●   WallpaperService
    ●   InputMethodManager
    ●   SystemUI
●   Don't let SurfaceFlinger Client try to open binder to SurfaceFlinger
●   Feed bogus values back from SurfaceFlinger Client
●   Disable qemud (emulator artefact)
●   Tweak internals by disabling key calls:
    ●   In ActivityStack.java:
        –   startHomeActivityLocked()
        –   setAppStartingWindow()
    ●   wm.detectSafeMode()
    ●   wm.systemReady()
    ●   wm.reclaimSuraceMemoryLocked()

                                                                           21
4. What's in there anyway?
●   Most everything Android gives you:
    ●   No UX
    ●   Fully-integrated Eclipse IDE
    ●   SDK/NDK
    ●   ADB
    ●   Fastboot
    ●   Published, well-known, and very rich APIs
    ●   A large and growing developer community
    ●   And still we can use the usual suspects:
        –   GNU toolchain, BusyBox, u- boot, glibc, ...
●   Caveat -- “Activity” no longer works
●   You have:
    ●   Services
    ●   ContentProviders
    ●   BroadcastReceivers
                                                          22
4.1. Usage recommendations
●   Use “am” to start your components
●   Mark your apks as “persistent”
●   ...




                                        23
5. Demo




          24
6. Housekeeping
●   Work in progress / proof-of-concept
●   Do NOT ship a product with this just yet
●   Will merge that into cyborgstack
●   I haven't bothered removing any of the
    standard apps: Browser, Email, Launcher2, ...
●   Lingering references to WindowManager in
    ActivityManager
●   ... and likely tons I overlooked or didn't test ...

                                              25
And then he said ...

“As your leader, I encourage you from time to time, and always in a respectful manner, to
question my logic. If you're unconvinced that a particular plan of action I've decided is the
wisest, tell me so, but allow me to convince you and I promise you right here and now, no
subject will ever be taboo. Except, of course, the subject that was just under discussion.
The price you pay for bringing up either my GNU or Linux heritage as a negative is... I
collect your fucking head. Just like this fucker here. Now, if any of you sons of bitches got
anything else to say, now's the fucking time!”




                                 Thank you ...

                karim.yaghmour@opersys.com



                                                                        26

More Related Content

What's hot

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.
 
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
Opersys inc.
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Opersys inc.
 

What's hot (20)

Android Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part IAndroid Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part I
 
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
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC Europe
 
Embedded Android Workshop part I ESC SV 2012
Embedded Android Workshop part I ESC SV 2012Embedded Android Workshop part I ESC SV 2012
Embedded Android Workshop part I ESC SV 2012
 
Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3
 
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
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
 
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 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
 
Leveraging Android's Linux Heritage at Android Open 2011
Leveraging Android's Linux Heritage at Android Open 2011Leveraging Android's Linux Heritage at Android Open 2011
Leveraging Android's Linux Heritage at Android Open 2011
 
Embedded Android Workshop at Android Open 2011
Embedded Android Workshop at Android Open 2011Embedded Android Workshop at Android Open 2011
Embedded Android Workshop at Android Open 2011
 
Embedded Android Workshop at Embedded Linux Conference Europe 2011
Embedded Android Workshop at Embedded Linux Conference Europe 2011Embedded Android Workshop at Embedded Linux Conference Europe 2011
Embedded Android Workshop at Embedded Linux Conference Europe 2011
 
Porting Android
Porting AndroidPorting Android
Porting Android
 
Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
 

Similar to Headless Android

Is Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVIs Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IV
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 VI
Opersys inc.
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon V
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 IV
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
Opersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon V
Opersys inc.
 
Android Platform Debugging and Development at ELCE 2013
Android Platform Debugging and Development at ELCE 2013Android Platform Debugging and Development at ELCE 2013
Android Platform Debugging and Development at ELCE 2013
Opersys inc.
 
Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014
Opersys inc.
 
The Listening: Email Client Backdoor
The Listening: Email Client BackdoorThe Listening: Email Client Backdoor
The Listening: Email Client Backdoor
Michael Scovetta
 
Android Platform Debugging and Development at ABS 2014
Android Platform Debugging and Development at ABS 2014Android Platform Debugging and Development at ABS 2014
Android Platform Debugging and Development at ABS 2014
Opersys inc.
 

Similar to Headless Android (20)

Is Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVIs Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IV
 
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
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon V
 
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
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
 
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 Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon V
 
Android Platform Debugging & Development
Android Platform Debugging & Development Android Platform Debugging & Development
Android Platform Debugging & Development
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android Platform Debugging and Development at ELCE 2013
Android Platform Debugging and Development at ELCE 2013Android Platform Debugging and Development at ELCE 2013
Android Platform Debugging and Development at ELCE 2013
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
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
 
Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014
 
The Listening: Email Client Backdoor
The Listening: Email Client BackdoorThe Listening: Email Client Backdoor
The Listening: Email Client Backdoor
 
Android Platform Debugging and Development at ABS 2014
Android Platform Debugging and Development at ABS 2014Android Platform Debugging and Development at ABS 2014
Android Platform Debugging and Development at ABS 2014
 
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
 

More from 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's HIDL: Treble in the HAL
Android's HIDL: Treble in the HALAndroid's HIDL: Treble in the HAL
Android's HIDL: Treble in the HAL
 
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
 
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
 
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
 
Brillo/Weave Internals
Brillo/Weave InternalsBrillo/Weave Internals
Brillo/Weave Internals
 

Recently uploaded

Recently uploaded (20)

SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Buy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfBuy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 

Headless Android

  • 1. Headless Android Android Builders Summit 2012 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com 1
  • 2. These slides are made available to you under a Creative Commons Delivered and/or customized by Share-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. (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. + = “And then GNU came back for revenge ...” -- Tarantino's sequel 4
  • 5. Agenda ● Why? ● What is it exactly? ● How to get there? ● What's in there anyway? ● Demo 5
  • 6. 1. Why? ● Took me a long time to wrap my head around ● “Why don't you just use embedded Linux?” ● What's “Embedded Linux” anyway? 6
  • 7. 1.1. What's “Embedded Linux”? ● A set of ad-hoc methods to package the Linux kernel with a (minimal) filesystem. ● FS content “to be determined” case-by-case ● APIs are specific to each device/build ● “Core software”: ● BusyBox ● U-Boot ● GNU Toolchain ● Your flavor of: ● glibc or uClibc or eglibc ● yocto or buildroot or eldk or ltib or ptxdist or ... ● No serious UX framework 7
  • 8. 1.2. What does Android offer? ● ... apart from its increasingly well known UX ... ● Fully-integrated Eclipse IDE ● SDK/NDK ● ADB ● Fastboot ● Published, well-known, and very rich APIs ● A large and growing developer community ● And still we can use the usual suspects: ● GNU toolchain, BusyBox, u- boot, glibc, ... An actual standardized dev. env. across all product lines 8
  • 9. 2. What is “Headless Android” exactly? 9
  • 10. 2.1. Possibilities ● No Java: ● TinyAndroid: $ BUILD_TINY_ANDROID=true make ­j4 ● AOSP w/ custom products .mk file ● The full-blown stack without: ● SurfaceFlinger ● WindowManager ● WallpaperService ● InputMethodManager 10
  • 11. 2.2. Tiny Android ● 3MB filesystem ● Minimal root fs ● init ● toolbox + shell ● adb ● bionic + utility libs ● No “system/framework/” ● No “system/app” 11
  • 12. 2.3. AOSP w/ custom product .mk ● Have a look at: ● build/target/product/*.mk ● Create your own device under “/device” and have fun ● Disable zygote at startup ● Remove all apks ● ... 12
  • 13. 3. How do we get the full stack? ? 13
  • 15. 3.2. Challenges ● Integration ● System Services are tightly coupled ● House of cards ● Dependencies are deeply buried in internals ● There are ~100KLOC of System Services ● Framework expects all System Services ● Rendering/Display are central tenants of arch. 15
  • 16. 3.3. Android's display architecture 16
  • 17. 3.4. Attempt #1 ● Target: Kill SurfaceFlinger and WindowManager ● Result: FAIL 17
  • 18. 3.5. Attempt #2 ● Target: Kill link between SF and FB ● Result: FAIL 18
  • 19. 3.6. Attempt #3 ● Target: Use VirtualFB ● Result: FAIL 19
  • 20. 3.7. Attempt #4 ● Target: Kill SurfaceFlinger and WindowManager ● Result: SUCCESS!!! 20
  • 21. 3.8. How? ● Disable: ● SurfaceFlinger ● WindowManager ● WallpaperService ● InputMethodManager ● SystemUI ● Don't let SurfaceFlinger Client try to open binder to SurfaceFlinger ● Feed bogus values back from SurfaceFlinger Client ● Disable qemud (emulator artefact) ● Tweak internals by disabling key calls: ● In ActivityStack.java: – startHomeActivityLocked() – setAppStartingWindow() ● wm.detectSafeMode() ● wm.systemReady() ● wm.reclaimSuraceMemoryLocked() 21
  • 22. 4. What's in there anyway? ● Most everything Android gives you: ● No UX ● Fully-integrated Eclipse IDE ● SDK/NDK ● ADB ● Fastboot ● Published, well-known, and very rich APIs ● A large and growing developer community ● And still we can use the usual suspects: – GNU toolchain, BusyBox, u- boot, glibc, ... ● Caveat -- “Activity” no longer works ● You have: ● Services ● ContentProviders ● BroadcastReceivers 22
  • 23. 4.1. Usage recommendations ● Use “am” to start your components ● Mark your apks as “persistent” ● ... 23
  • 24. 5. Demo 24
  • 25. 6. Housekeeping ● Work in progress / proof-of-concept ● Do NOT ship a product with this just yet ● Will merge that into cyborgstack ● I haven't bothered removing any of the standard apps: Browser, Email, Launcher2, ... ● Lingering references to WindowManager in ActivityManager ● ... and likely tons I overlooked or didn't test ... 25
  • 26. And then he said ... “As your leader, I encourage you from time to time, and always in a respectful manner, to question my logic. If you're unconvinced that a particular plan of action I've decided is the wisest, tell me so, but allow me to convince you and I promise you right here and now, no subject will ever be taboo. Except, of course, the subject that was just under discussion. The price you pay for bringing up either my GNU or Linux heritage as a negative is... I collect your fucking head. Just like this fucker here. Now, if any of you sons of bitches got anything else to say, now's the fucking time!” Thank you ... karim.yaghmour@opersys.com 26