SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Android Flash Development
Android Flash DevelopmentAndroid Flash Development
Android Flash Development
Stephen Chin
 

Was ist angesagt? (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
 

Andere mochten auch

Andere mochten auch (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
 

Ähnlich wie Headless Android Strikes Back!

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
Howard Greenberg
 
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
Benjamin Zores
 
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.
 
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.
 

Ähnlich wie 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
 

Kürzlich hochgeladen

VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
Tonystark477637
 

Kürzlich hochgeladen (20)

UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduits
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
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
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 

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