SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Headless Android Strikes Back!
ABS2014
04/29/2014
Gary Bisson
Embedded Software Engineer
ABOUT THE PRESENTER
• Embedded Software Engineer at Adeneo Embedded
(Bellevue, WA)
BSP Adaptation
Driver Development
System Integration
• Linux/Android enthusiast
SESSION OVERVIEW
1. Introduction
2. Headless Architecture
3. Headless Applications
4. Demonstration
5. Conclusion
Introduction
Headless Android Introduction
WHY ARE WE HERE?
• Android without UI?
• Use cases?
• Set the expectations of such system
Warning
Not about Embedded Linux vs. Headless Android...
5
Headless Android Introduction
WHAT'S THE INTEREST?
• Same OS/application across product line
• Standardized development environment
• Android API & tools:
SDK/NDK
ADB/Fastboot
systrace
6
Headless Android Introduction
WHAT'S DIFFERENT NOW?
• Update:
What has changed since first introduced?
Tips & tricks from past experience
• Come to the dark side of Android...
7
Headless Architecture
Headless Android Headless Architecture
ANDROID ARCHITECTURE
9
Headless Android Headless Architecture
CYBORGSTACK SOLUTION
• The full-blown stack without:
SurfaceFlinger
WindowManager
WallpaperService
InputMethodManager
SystemUI
• Some tricks: fake values from SF Client
10
Headless Android Headless Architecture
CYBORGSTACK SOLUTION
• Integration into source tree:
From Cyborgstack's GitHub:
♦ headless branch
Change for generic-eng target
Directly into AOSP internals
11
Headless Android Headless Architecture
GOING FURTHER
Some went further:
• Remove stock apps
Browser
HTMLViewer
...
• Remove unnecessary preloaded-classes
View
Graphics
...
• Remove few other System Services
12
Headless Android Headless Architecture
SOME FIGURES
• Vanilla Gingerbread generic-eng build:
system size: 64MB
Free memory: 122/256MB
• Cyborgstack Headless build:
system size: 64MB
Free memory: 172/256MB
• Enhanced Headless build:
system size: 47M
Free memory: 202/256MB
13
Headless Android Headless Architecture
SUMMARY
As stated by Cyborgstack:
• Very much a proof of concept
• Not easily portable
Change of frameworks, system...
• Good starting point
• Gingerbread now getting old
14
Headless Android Headless Architecture
AOSP INTEGRATION
• ro.config.headless property
• Alongside Jelly Bean 4.1 release
• Hasn't really evolved since though
15
Headless Android Headless Architecture
NEW ARCHITECTURE
• SurfaceControl: tells user the device is Headless
• WallpaperService: not started
• SystemUI: not started
• DisplayManager: returns HeadlessDisplayAdapter
• PhoneWindowManager: skips action to user
• ActivityManager: skips Home app + activity creation
16
Headless Android Headless Architecture
WHAT'S DIFFERENT
Advantages:
• Same tree for both headless and regular builds
• Easy to tweak:
SystemProperties.get("ro.config.headless", "0")
Drawbacks:
• Not as thorough as it could be
• System Server crashes... needs modifications
17
Headless Android Headless Architecture
WHAT I'VE TRIED
Quick fixes:
• Patch SurfaceControl not to throw an exception
• Patch SurfaceFlinger not to start bootanim
• Remove SystemUI + some stock apps
• config.disable_noncore
• config.disable_systemui
18
Headless Android Headless Architecture
GOING FURTHER
Same work needs to be done:
• Remove WindowManager
• Remove other UI-specific app/libraries
• Reduce preload libraries
• ...
19
Headless Android Headless Architecture
SOME FIGURES
• Vanilla KitKat aosp_arm-eng build:
system size: 303MB
Free memory: 284/512MB
• Generic armv7-a-neon mini build:
system size: 128MB
Free memory: 356/512MB
• Generic "Headless" mini build:
system size: 128MB
Free memory: 356/512MB
• Optimized "Headless" mini build:
system size: 124MB
Free memory: 394/512MB
20
Headless Applications
Headless Android Headless Applications
NO ACTIVITY SO WHAT?
• App components:
Service
ContentProvider
BroadcastReceiver
• Android Framework
22
Headless Android Headless Applications
NO ACTIVITY SO WHAT?
Activities
Services
Broadcast
Receivers
Content
Providers
System
Services
23
Headless Android Headless Applications
HOW TO?
• AndroidManifest.xml trick
• am commands
• persistent for System apps only
• BOOT_COMPLETED Intent otherwise
• System Services:
onSensorChanged()
onKeyDown()
Custom System Service!
24
Headless Android Headless Applications
DEBUGGING
• By default, debugging only works for Activity-based
application
• Need to start the application manually with am
• Either attach manually or specify it in code:
android.os.Debug.waitForDebugger()
25
Headless Android Headless Applications
USE CASES
• Barcode scanner
• Home automation remote
Button vs. Touchscreen
LED vs. Display
IP stays the same
26
Demonstration
Headless Android Demonstration
HARDWARE SELECTION
• Android emulators
Gingerbread 2.3.7_r1
Kit Kat 4.4_r1
• Low-end ARM device:
Atmel sam9g20-ek (64M of RAM)
No graphics
28
Conclusion
Headless Android Conclusion
CONCLUSION
• Good intentions
• Industry demand
• Activity limitation
• Source code: https://github.com/gibsson/headless-android
30
Headless Android Conclusion
QUESTIONS?
31
Headless Android Conclusion
REFERENCES
• Karim Yaghmour: Embedded Android
O'Reilly Shop
• Opersys/Cyborgstack: Headless Android
ABS2012 - Headless Android
Opersys Headless Blog Post
• Headless Android Blogspot (Casey Anderson):
Gingerbread Patches
32

Más contenido relacionado

La actualidad más candente

Android OS Porting: Introduction
Android OS Porting: IntroductionAndroid OS Porting: Introduction
Android OS Porting: IntroductionJollen Chen
 
The abcs of gpu
The abcs of gpuThe abcs of gpu
The abcs of gpuLiang Yan
 
Userspace drivers-2016
Userspace drivers-2016Userspace drivers-2016
Userspace drivers-2016Chris Simmonds
 
Android Flash Development
Android Flash DevelopmentAndroid Flash Development
Android Flash DevelopmentStephen Chin
 
Introductory webinar on iRidium
Introductory webinar on iRidiumIntroductory webinar on iRidium
Introductory webinar on iRidiumiRidiumMobile365
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverNanik Tolaram
 
Enhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_osEnhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_osArnav Gupta
 
Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...
Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...
Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...Cheng-Yi Yu
 
Kubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemKubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemTomoya Fujita
 
Android beyond the smartphone
Android beyond the smartphoneAndroid beyond the smartphone
Android beyond the smartphoneChris Simmonds
 
Sony robotics overview
Sony robotics overviewSony robotics overview
Sony robotics overviewTomoya Fujita
 
Quick and Easy Device Drivers for Embedded Linux Using UIO
Quick and Easy Device Drivers for Embedded Linux Using UIOQuick and Easy Device Drivers for Embedded Linux Using UIO
Quick and Easy Device Drivers for Embedded Linux Using UIOChris Simmonds
 
Android Internal Services
Android Internal ServicesAndroid Internal Services
Android Internal ServicesNanik Tolaram
 
CNIT 128 8. Identifying and Exploiting Android Implementation Issues (Part 1)
CNIT 128 8. Identifying and Exploiting Android Implementation Issues (Part 1)CNIT 128 8. Identifying and Exploiting Android Implementation Issues (Part 1)
CNIT 128 8. Identifying and Exploiting Android Implementation Issues (Part 1)Sam Bowne
 
CNIT 128 6. Analyzing Android Applications (Part 3 of 3)
CNIT 128 6. Analyzing Android Applications (Part 3 of 3)CNIT 128 6. Analyzing Android Applications (Part 3 of 3)
CNIT 128 6. Analyzing Android Applications (Part 3 of 3)Sam Bowne
 
Customize and control connected devices
Customize and control connected devicesCustomize and control connected devices
Customize and control connected devicesCodemotion
 

La actualidad más candente (20)

Android OS Porting: Introduction
Android OS Porting: IntroductionAndroid OS Porting: Introduction
Android OS Porting: Introduction
 
The abcs of gpu
The abcs of gpuThe abcs of gpu
The abcs of gpu
 
Userspace drivers-2016
Userspace drivers-2016Userspace drivers-2016
Userspace drivers-2016
 
Android Flash Development
Android Flash DevelopmentAndroid Flash Development
Android Flash Development
 
Introductory webinar on iRidium
Introductory webinar on iRidiumIntroductory webinar on iRidium
Introductory webinar on iRidium
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
 
Enhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_osEnhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_os
 
Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...
Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...
Android Security Development - Part 2: Malicious Android App Dynamic Analyzi...
 
Kubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemKubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster System
 
Android beyond the smartphone
Android beyond the smartphoneAndroid beyond the smartphone
Android beyond the smartphone
 
Sony robotics overview
Sony robotics overviewSony robotics overview
Sony robotics overview
 
Android OS
Android OSAndroid OS
Android OS
 
Android
AndroidAndroid
Android
 
Quick and Easy Device Drivers for Embedded Linux Using UIO
Quick and Easy Device Drivers for Embedded Linux Using UIOQuick and Easy Device Drivers for Embedded Linux Using UIO
Quick and Easy Device Drivers for Embedded Linux Using UIO
 
Android Internal Services
Android Internal ServicesAndroid Internal Services
Android Internal Services
 
CNIT 128 8. Identifying and Exploiting Android Implementation Issues (Part 1)
CNIT 128 8. Identifying and Exploiting Android Implementation Issues (Part 1)CNIT 128 8. Identifying and Exploiting Android Implementation Issues (Part 1)
CNIT 128 8. Identifying and Exploiting Android Implementation Issues (Part 1)
 
CNIT 128 6. Analyzing Android Applications (Part 3 of 3)
CNIT 128 6. Analyzing Android Applications (Part 3 of 3)CNIT 128 6. Analyzing Android Applications (Part 3 of 3)
CNIT 128 6. Analyzing Android Applications (Part 3 of 3)
 
Customize and control connected devices
Customize and control connected devicesCustomize and control connected devices
Customize and control connected devices
 
Android session-1-sajib
Android session-1-sajibAndroid session-1-sajib
Android session-1-sajib
 
Maddy android
Maddy androidMaddy android
Maddy android
 

Destacado (7)

Useful USB Gadgets on Linux
Useful USB Gadgets on LinuxUseful USB Gadgets on Linux
Useful USB Gadgets on Linux
 
Leveraging the Android Open Accessory Protocol
Leveraging the Android Open Accessory ProtocolLeveraging the Android Open Accessory Protocol
Leveraging the Android Open Accessory Protocol
 
Quickboot on i.MX6
Quickboot on i.MX6Quickboot on i.MX6
Quickboot on i.MX6
 
Android OTA updates
Android OTA updatesAndroid OTA updates
Android OTA updates
 
Embedded Android : System Development - Part III
Embedded Android : System Development - Part IIIEmbedded Android : System Development - Part III
Embedded Android : System Development - Part III
 
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IVEmbedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
 

Similar a Headless Android Strikes Back!

Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...Codemotion Tel Aviv
 
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TVBeMyApp
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoTOpersys inc.
 
ABS 2014 - The Growth of Android in Embedded Systems
ABS 2014 - The Growth of Android in Embedded SystemsABS 2014 - The Growth of Android in Embedded Systems
ABS 2014 - The Growth of Android in Embedded SystemsBenjamin Zores
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationNils Hofmeister
 
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 VOpersys inc.
 
Java uk road tour - sep 06
Java uk road tour - sep 06Java uk road tour - sep 06
Java uk road tour - sep 06scoobeesnac
 
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.
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 
Building CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptxBuilding CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptxGurzuInc
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)Chris Simmonds
 
Evolution of Android Update Principles
Evolution of Android Update PrinciplesEvolution of Android Update Principles
Evolution of Android Update PrinciplesGlobalLogic Ukraine
 
Serverless java
Serverless   javaServerless   java
Serverless javaVishwas N
 
Mobile CICD
Mobile CICD Mobile CICD
Mobile CICD Gurzu Inc
 

Similar a Headless Android Strikes Back! (20)

Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
 
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoT
 
ABS 2014 - The Growth of Android in Embedded Systems
ABS 2014 - The Growth of Android in Embedded SystemsABS 2014 - The Growth of Android in Embedded Systems
ABS 2014 - The Growth of Android in Embedded Systems
 
PHP Unconference Continuous Integration
PHP Unconference Continuous IntegrationPHP Unconference Continuous Integration
PHP Unconference Continuous Integration
 
Android overview
Android overviewAndroid overview
Android overview
 
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
 
Java uk road tour - sep 06
Java uk road tour - sep 06Java uk road tour - sep 06
Java uk road tour - sep 06
 
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
 
Presentation1
Presentation1Presentation1
Presentation1
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Building CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptxBuilding CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptx
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)
 
Evolution of Android Update Principles
Evolution of Android Update PrinciplesEvolution of Android Update Principles
Evolution of Android Update Principles
 
Serverless java
Serverless   javaServerless   java
Serverless java
 
Mobile CICD
Mobile CICD Mobile CICD
Mobile CICD
 
Lick my Lollipop
Lick my LollipopLick my Lollipop
Lick my Lollipop
 
Pertemuan 3 pm
Pertemuan 3   pmPertemuan 3   pm
Pertemuan 3 pm
 

Último

KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdfSuman Jyoti
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756dollysharma2066
 
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Standamitlee9823
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptMsecMca
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...ranjana rawat
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTbhaskargani46
 
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLPVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLManishPatel169454
 
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxBSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxfenichawla
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01KreezheaRecto
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdfankushspencer015
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapRishantSharmaFr
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordAsst.prof M.Gokilavani
 

Último (20)

KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLPVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
 
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxBSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 

Headless Android Strikes Back!

  • 1. Headless Android Strikes Back! ABS2014 04/29/2014 Gary Bisson Embedded Software Engineer
  • 2. ABOUT THE PRESENTER • Embedded Software Engineer at Adeneo Embedded (Bellevue, WA) BSP Adaptation Driver Development System Integration • Linux/Android enthusiast
  • 3. SESSION OVERVIEW 1. Introduction 2. Headless Architecture 3. Headless Applications 4. Demonstration 5. Conclusion
  • 5. Headless Android Introduction WHY ARE WE HERE? • Android without UI? • Use cases? • Set the expectations of such system Warning Not about Embedded Linux vs. Headless Android... 5
  • 6. Headless Android Introduction WHAT'S THE INTEREST? • Same OS/application across product line • Standardized development environment • Android API & tools: SDK/NDK ADB/Fastboot systrace 6
  • 7. Headless Android Introduction WHAT'S DIFFERENT NOW? • Update: What has changed since first introduced? Tips & tricks from past experience • Come to the dark side of Android... 7
  • 9. Headless Android Headless Architecture ANDROID ARCHITECTURE 9
  • 10. Headless Android Headless Architecture CYBORGSTACK SOLUTION • The full-blown stack without: SurfaceFlinger WindowManager WallpaperService InputMethodManager SystemUI • Some tricks: fake values from SF Client 10
  • 11. Headless Android Headless Architecture CYBORGSTACK SOLUTION • Integration into source tree: From Cyborgstack's GitHub: ♦ headless branch Change for generic-eng target Directly into AOSP internals 11
  • 12. Headless Android Headless Architecture GOING FURTHER Some went further: • Remove stock apps Browser HTMLViewer ... • Remove unnecessary preloaded-classes View Graphics ... • Remove few other System Services 12
  • 13. Headless Android Headless Architecture SOME FIGURES • Vanilla Gingerbread generic-eng build: system size: 64MB Free memory: 122/256MB • Cyborgstack Headless build: system size: 64MB Free memory: 172/256MB • Enhanced Headless build: system size: 47M Free memory: 202/256MB 13
  • 14. Headless Android Headless Architecture SUMMARY As stated by Cyborgstack: • Very much a proof of concept • Not easily portable Change of frameworks, system... • Good starting point • Gingerbread now getting old 14
  • 15. Headless Android Headless Architecture AOSP INTEGRATION • ro.config.headless property • Alongside Jelly Bean 4.1 release • Hasn't really evolved since though 15
  • 16. Headless Android Headless Architecture NEW ARCHITECTURE • SurfaceControl: tells user the device is Headless • WallpaperService: not started • SystemUI: not started • DisplayManager: returns HeadlessDisplayAdapter • PhoneWindowManager: skips action to user • ActivityManager: skips Home app + activity creation 16
  • 17. Headless Android Headless Architecture WHAT'S DIFFERENT Advantages: • Same tree for both headless and regular builds • Easy to tweak: SystemProperties.get("ro.config.headless", "0") Drawbacks: • Not as thorough as it could be • System Server crashes... needs modifications 17
  • 18. Headless Android Headless Architecture WHAT I'VE TRIED Quick fixes: • Patch SurfaceControl not to throw an exception • Patch SurfaceFlinger not to start bootanim • Remove SystemUI + some stock apps • config.disable_noncore • config.disable_systemui 18
  • 19. Headless Android Headless Architecture GOING FURTHER Same work needs to be done: • Remove WindowManager • Remove other UI-specific app/libraries • Reduce preload libraries • ... 19
  • 20. Headless Android Headless Architecture SOME FIGURES • Vanilla KitKat aosp_arm-eng build: system size: 303MB Free memory: 284/512MB • Generic armv7-a-neon mini build: system size: 128MB Free memory: 356/512MB • Generic "Headless" mini build: system size: 128MB Free memory: 356/512MB • Optimized "Headless" mini build: system size: 124MB Free memory: 394/512MB 20
  • 22. Headless Android Headless Applications NO ACTIVITY SO WHAT? • App components: Service ContentProvider BroadcastReceiver • Android Framework 22
  • 23. Headless Android Headless Applications NO ACTIVITY SO WHAT? Activities Services Broadcast Receivers Content Providers System Services 23
  • 24. Headless Android Headless Applications HOW TO? • AndroidManifest.xml trick • am commands • persistent for System apps only • BOOT_COMPLETED Intent otherwise • System Services: onSensorChanged() onKeyDown() Custom System Service! 24
  • 25. Headless Android Headless Applications DEBUGGING • By default, debugging only works for Activity-based application • Need to start the application manually with am • Either attach manually or specify it in code: android.os.Debug.waitForDebugger() 25
  • 26. Headless Android Headless Applications USE CASES • Barcode scanner • Home automation remote Button vs. Touchscreen LED vs. Display IP stays the same 26
  • 28. Headless Android Demonstration HARDWARE SELECTION • Android emulators Gingerbread 2.3.7_r1 Kit Kat 4.4_r1 • Low-end ARM device: Atmel sam9g20-ek (64M of RAM) No graphics 28
  • 30. Headless Android Conclusion CONCLUSION • Good intentions • Industry demand • Activity limitation • Source code: https://github.com/gibsson/headless-android 30
  • 32. Headless Android Conclusion REFERENCES • Karim Yaghmour: Embedded Android O'Reilly Shop • Opersys/Cyborgstack: Headless Android ABS2012 - Headless Android Opersys Headless Blog Post • Headless Android Blogspot (Casey Anderson): Gingerbread Patches 32