SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Headless Android
        AnDevCon III

      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
5.1. In numbers (/proc/meminfo)
●   Full Android                               ●   Headless Android
     MemTotal:          94096 kB     12%            MemTotal:          93960 kB
     MemFree:            1628 kB                    MemFree:           13676 kB
     Buffers:               0 kB                    Buffers:               0 kB
     Cached:            31248 kB                    Cached:            48844 kB
     SwapCached:            0 kB                    SwapCached:            0 kB
     Active:            33288 kB                    Active:            29484 kB
     Inactive:          40900 kB                    Inactive:          44328 kB
     Active(anon):      25164 kB                    Active(anon):      25020 kB
     Inactive(anon):    28132 kB                    Inactive(anon):        0 kB
     Active(file):       8124 kB                    Active(file):       4464 kB
     Inactive(file):    12768 kB                    Inactive(file):    44328 kB
     Unevictable:        6672 kB
                                   7% vs. 0%        Unevictable:           0 kB
     Mlocked:               0 kB                    Mlocked:               0 kB
     SwapTotal:             0 kB                    SwapTotal:             0 kB
     SwapFree:              0 kB                    SwapFree:              0 kB
     Dirty:                 0 kB                    Dirty:                 0 kB
     Writeback:             0 kB                    Writeback:             0 kB
     AnonPages:         49648 kB                    AnonPages:         24988 kB
     Mapped:            17272 kB                    Mapped:            23820 kB
     Slab:               3492 kB                    Slab:               2808 kB
     SReclaimable:        972 kB                    SReclaimable:        892 kB
     SUnreclaim:         2520 kB                    SUnreclaim:         1916 kB
     PageTables:         4692 kB                    PageTables:         2096 kB
     NFS_Unstable:          0 kB                    NFS_Unstable:          0 kB
     Bounce:                0 kB                    Bounce:                0 kB
     WritebackTmp:          0 kB                    WritebackTmp:          0 kB
     CommitLimit:       47048 kB                    CommitLimit:       46980 kB
     Committed_AS:     710456 kB                    Committed_AS:     276908 kB
     VmallocTotal:     876544 kB                    VmallocTotal:     876544 kB
     VmallocUsed:       15456 kB                    VmallocUsed:        5256 kB
     VmallocChunk:     852996 kB                    VmallocChunk:     870404 kB


                                                                            25
5.2. Processes
●
    Full Android                                                                         ●
                                                                                             Headless Android
     USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME                             USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
     root      1     0     268    180   c009b74c 0000875c S /init                             root      1     0     268    180   c009ebcc 0000875c S /init
     root      2     0     0      0     c004e72c 00000000 S kthreadd                          root      2     0     0      0     c004e8fc 00000000 S kthreadd
     root      3     2     0      0     c003fdc8 00000000 S ksoftirqd/0                       root      3     2     0      0     c003fc70 00000000 S ksoftirqd/0
     root      4     2     0      0     c004b2c4 00000000 S events/0                          root      4     2     0      0     c004b22c 00000000 S events/0
     root      5     2     0      0     c004b2c4 00000000 S khelper                           root      5     2     0      0     c004b22c 00000000 S khelper
                                                                                              root      6     2     0      0     c004b22c 00000000 S suspend
     root      6     2     0      0     c004b2c4 00000000 S suspend
                                                                                              root      7     2     0      0     c004b22c 00000000 S kblockd/0
     root      7     2     0      0     c004b2c4 00000000 S kblockd/0                         root      8     2     0      0     c004b22c 00000000 S cqueue
     root      8     2     0      0     c004b2c4 00000000 S cqueue                            root      9     2     0      0     c017c974 00000000 S kseriod
     root      9     2     0      0     c018179c 00000000 S kseriod                           root      10    2     0      0     c004b22c 00000000 S kmmcd
     root      10    2     0      0     c004b2c4 00000000 S kmmcd                             root      11    2     0      0     c0072f5c 00000000 S pdflush
     root      11    2     0      0     c006fc74 00000000 S pdflush                           root      12    2     0      0     c0072f5c 00000000 S pdflush
     root      12    2     0      0     c006fc74 00000000 S pdflush                           root      13    2     0      0     c00777bc 00000000 S kswapd0
     root      13    2     0      0     c0079750 00000000 D kswapd0                           root      14    2     0      0     c004b22c 00000000 S aio/0
     root      14    2     0      0     c004b2c4 00000000 S aio/0                             root      22    2     0      0     c0179ec0 00000000 S mtdblockd
     root      22    2     0      0     c017ef48 00000000 S mtdblockd                         root      23    2     0      0     c004b22c 00000000 S kstriped
                                                                                              root      24    2     0      0     c004b22c 00000000 S hid_compat
     root      23    2     0      0     c004b2c4 00000000 S kstriped
                                                                                              root      27    2     0      0     c004b22c 00000000 S rpciod/0
     root      24    2     0      0     c004b2c4 00000000 S hid_compat                        root      28    1     232    136   c009ebcc 0000875c S /sbin/ueventd
     root      25    2     0      0     c004b2c4 00000000 S rpciod/0                          system    29    1     804    260   c01a4834 afd0b6fc S /system/bin/servicemanager
     root      26    1     232    136   c009b74c 0000875c S /sbin/ueventd                     root      30    1     3864   568   ffffffff afd0bdac S /system/bin/vold
     system    27    1     804    196   c01a94a4 afd0b6fc S /system/bin/servicemanager        root      31    1     3832   556   ffffffff afd0bdac S /system/bin/netd
     root      28    1     3864   308   ffffffff afd0bdac S /system/bin/vold                  root      32    1     664    264   c01b08f8 afd0c0cc S /system/bin/debuggerd
     root      29    1     3836   324   ffffffff afd0bdac S /system/bin/netd                  root      33    1     1268   588   c00522ac afd0bdac S /system/bin/rild
     root      30    1     664    188   c01b52b4 afd0c0cc S /system/bin/debuggerd             root      34    1     60864  25992 c009ebcc afd0b844 S zygote
     radio     31    1     5396   448   ffffffff afd0bdac S /system/bin/rild                  media     35    1     17972  3712  ffffffff afd0b6fc S /system/bin/mediaserver
     root      32    1     60884  16476 c009b74c afd0b844 S zygote                            bluetooth 36    1     1256   572   c009ebcc afd0c59c S /system/bin/dbus­daemon
                                                                                              root      37    1     812    316   c0213b90 afd0b45c S /system/bin/installd
     media     33    1     17976  1016  ffffffff afd0b6fc S /system/bin/mediaserver
                                                                                              keystore  38    1     1744   432   c01b08f8 afd0c0cc S /system/bin/keystore
     bluetooth 34    1     1256   220   c009b74c afd0c59c S /system/bin/dbus­daemon           shell     41    1     732    312   c01532bc afd0b45c S /system/bin/sh
     root      35    1     812    232   c02181f4 afd0b45c S /system/bin/installd              root      42    1     3360   164   ffffffff 00008294 S /sbin/adbd
     keystore  36    1     1744   212   c01b52b4 afd0c0cc S /system/bin/keystore              system    60    34    101104 28276 ffffffff afd0b6fc S system_server
     root      38    1     824    268   c00b8fec afd0c51c S /system/bin/qemud                 radio     99    34    81624  22600 ffffffff afd0c51c S com.android.phone
     shell     40    1     732    200   c0158eb0 afd0b45c S /system/bin/sh                    system    116   34    73768  20740 ffffffff afd0c51c S com.android.settings
     root      41    1     3364   168   ffffffff 00008294 S /sbin/adbd                        app_1     133   34    81120  25596 ffffffff afd0c51c S android.process.acore
     system    62    32    122088 25860 ffffffff afd0b6fc S system_server                     root      147   42    732    344   c003d8d0 afd0c3ac S /system/bin/sh
     app_19    116   32    77280  17520 ffffffff afd0c51c S                                   root      153   147   888    320   00000000 afd0b45c R ps
     com.android.inputmethod.latin
     radio     122   32    86100  17992 ffffffff afd0c51c S com.android.phone
     system    126   32    73316  19028 ffffffff afd0c51c S com.android.systemui
     app_25    136   32    76564  21276 ffffffff afd0c51c S com.android.launcher
     root      156   41    2132   452   c003da38 00110c84 S /bin/sh
     app_1     174   32    76092  18268 ffffffff afd0c51c S android.process.acore
     app_9     218   32    73168  17052 ffffffff afd0c51c S android.process.media
     app_23    260   32    82464  16584 ffffffff afd0c51c S com.android.mms
     app_28    277   32    72804  17852 ffffffff afd0c51c S com.android.email
     app_13    289   32    70796  16532 ffffffff afd0c51c S com.android.quicksearchbox
     app_21    309   32    69764  15552 ffffffff afd0c51c S com.android.protips
     app_18    318   32    70324  15812 ffffffff afd0c51c S com.android.music
     app_3     327   32    71484  16940 ffffffff afd0c51c S com.cooliris.media
     root      344   156   888    328   00000000 afd0b45c R /system/bin/ps




                                                                                                                                            26
5.3. Services
●
    Full Android
     0 phone: [com.android.internal.telephony.ITelephony]
     1 iphonesubinfo: [com.android.internal.telephony.IPhoneSubInfo]              ●
                                                                                      Headless Android
     2 simphonebook: [com.android.internal.telephony.IIccPhoneBook]                    0    phone: [com.android.internal.telephony.ITelephony]
     3 isms: [com.android.internal.telephony.ISms]                                     1    iphonesubinfo: [com.android.internal.telephony.IPhoneSubInfo]
     4 opersys: [android.os.IOpersysService]                                           2    simphonebook: [com.android.internal.telephony.IIccPhoneBook]
     5 diskstats: []                                                                   3    isms: [com.android.internal.telephony.ISms]
     6 appwidget: [com.android.internal.appwidget.IAppWidgetService]                   4    diskstats: []
     7 backup: [android.app.backup.IBackupManager]                                     5    appwidget: [com.android.internal.appwidget.IAppWidgetService]
     8 uimode: [android.app.IUiModeManager]                                            6    backup: [android.app.backup.IBackupManager]
                                                                                       7    uimode: [android.app.IUiModeManager]
     9 usb: [android.hardware.usb.IUsbManager]
                                                                                       8    usb: [android.hardware.usb.IUsbManager]
     10 audio: [android.media.IAudioService]
                                                                                       9    audio: [android.media.IAudioService]
     11 wallpaper: [android.app.IWallpaperManager]                                     10   dropbox: [com.android.internal.os.IDropBoxManagerService]
     12 dropbox: [com.android.internal.os.IDropBoxManagerService]                      11   search: [android.app.ISearchManager]
     13 search: [android.app.ISearchManager]                                           12   location: [android.location.ILocationManager]
     14 location: [android.location.ILocationManager]                                  13   devicestoragemonitor: []
     15 devicestoragemonitor: []                                                       14   notification: [android.app.INotificationManager]
     16 notification: [android.app.INotificationManager]                               15   mount: [IMountService]
     17 mount: [IMountService]                                                         16   accessibility: [android.view.accessibility.IAccessibilityManager]
     18 accessibility: [android.view.accessibility.IAccessibilityManager]              17   throttle: [android.net.IThrottleManager]
     19 throttle: [android.net.IThrottleManager]                                       18   connectivity: [android.net.IConnectivityManager]
     20 connectivity: [android.net.IConnectivityManager]                               19   wifi: [android.net.wifi.IWifiManager]
     21 wifi: [android.net.wifi.IWifiManager]                                          20   network_management: [android.os.INetworkManagementService]
     22 network_management: [android.os.INetworkManagementService]                     21   netstat: [android.os.INetStatService]
     23 netstat: [android.os.INetStatService]                                          22   clipboard: [android.text.IClipboard]
     24 input_method: [com.android.internal.view.IInputMethodManager]                  23   statusbar: [com.android.internal.statusbar.IStatusBarService]
     25 clipboard: [android.text.IClipboard]                                           24   device_policy: [android.app.admin.IDevicePolicyManager]
                                                                                       25   alarm: [android.app.IAlarmManager]
     26 statusbar: [com.android.internal.statusbar.IStatusBarService]
                                                                                       26   vibrator: [android.os.IVibratorService]
     27 device_policy: [android.app.admin.IDevicePolicyManager]
                                                                                       27   hardware: [android.os.IHardwareService]
     28 window: [android.view.IWindowManager]                                          28   battery: []
     29 alarm: [android.app.IAlarmManager]                                             29   content: [android.content.IContentService]
     30 vibrator: [android.os.IVibratorService]                                        30   account: [android.accounts.IAccountManager]
     31 hardware: [android.os.IHardwareService]                                        31   permission: [android.os.IPermissionController]
     32 battery: []                                                                    32   cpuinfo: []
     33 content: [android.content.IContentService]                                     33   meminfo: []
     34 account: [android.accounts.IAccountManager]                                    34   activity: [android.app.IActivityManager]
     35 permission: [android.os.IPermissionController]                                 35   package: [android.content.pm.IPackageManager]
     36 cpuinfo: []                                                                    36   telephony.registry: [com.android.internal.telephony.ITelephonyRegistry]
     37 meminfo: []                                                                    37   usagestats: [com.android.internal.app.IUsageStats]
     38 activity: [android.app.IActivityManager]                                       38   batteryinfo: [com.android.internal.app.IBatteryStats]
     39 package: [android.content.pm.IPackageManager]                                  39   power: [android.os.IPowerManager]
     40 telephony.registry: [com.android.internal.telephony.ITelephonyRegistry]        40   entropy: []
     41 usagestats: [com.android.internal.app.IUsageStats]                             41   sensorservice: [android.gui.SensorServer]
                                                                                       42   media.audio_policy: [android.media.IAudioPolicyService]
     42 batteryinfo: [com.android.internal.app.IBatteryStats]
                                                                                       43   media.camera: [android.hardware.ICameraService]
     43 power: [android.os.IPowerManager]
                                                                                       44   media.player: [android.media.IMediaPlayerService]
     44 entropy: []                                                                    45   media.audio_flinger: [android.media.IAudioFlinger]
     45 sensorservice: [android.gui.SensorServer]
     46 SurfaceFlinger: [android.ui.ISurfaceComposer]
     47 media.audio_policy: [android.media.IAudioPolicyService]
     48 media.camera: [android.hardware.ICameraService]
     49 media.player: [android.media.IMediaPlayerService]
     50 media.audio_flinger: [android.media.IAudioFlinger]




                                                                                                                                      27
6. Housekeeping
●   Work in progress / proof-of-concept
●   Do NOT ship a product with this just yet
●   Branch in cyborgstack: cyborgstack.org
●   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 ...

                                              28
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 ...

                                     VZADC3

                karim.yaghmour@opersys.com


                                                                        29

Weitere ähnliche Inhalte

Was ist angesagt?

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 2012Opersys inc.
 
Android jumpstart at ESC Boston 2011
Android jumpstart at ESC Boston 2011Android jumpstart at ESC Boston 2011
Android jumpstart at ESC Boston 2011Opersys inc.
 
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 2012Opersys 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 2013Opersys 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 2013Opersys inc.
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowOpersys inc.
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
 
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 AnDevConIIOpersys inc.
 
Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3Opersys inc.
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 
Developing Android Platform Tools
Developing Android Platform ToolsDeveloping Android Platform Tools
Developing Android Platform ToolsOpersys inc.
 
Running Code in the Android Stack at ABS 2014
Running Code in the Android Stack at ABS 2014Running Code in the Android Stack at ABS 2014
Running Code in the Android Stack at ABS 2014Opersys 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 2011Opersys 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.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 

Was ist angesagt? (20)

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
 
Android jumpstart at ESC Boston 2011
Android jumpstart at ESC Boston 2011Android jumpstart at ESC Boston 2011
Android jumpstart at ESC Boston 2011
 
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
 
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
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
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
 
Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Cyborgstack
CyborgstackCyborgstack
Cyborgstack
 
Developing Android Platform Tools
Developing Android Platform ToolsDeveloping Android Platform Tools
Developing Android Platform Tools
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Running Code in the Android Stack at ABS 2014
Running Code in the Android Stack at ABS 2014Running Code in the Android Stack at ABS 2014
Running Code in the Android Stack at ABS 2014
 
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
 
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...
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 

Andere mochten auch

Embedded Android Workshop AnDevCon 3
Embedded Android Workshop AnDevCon 3Embedded Android Workshop AnDevCon 3
Embedded Android Workshop AnDevCon 3Opersys inc.
 
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 2014Opersys 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 2014Opersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Customizing Android's UI
Customizing Android's UICustomizing Android's UI
Customizing Android's UIOpersys 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 VIOpersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave InternalsOpersys inc.
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in AndroidOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in AndroidOpersys inc.
 
Android Storage - Internal and External Storages
Android Storage - Internal and External StoragesAndroid Storage - Internal and External Storages
Android Storage - Internal and External StoragesWilliam Lee
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in AndroidOpersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System ServerOpersys inc.
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 

Andere mochten auch (20)

Embedded Android Workshop AnDevCon 3
Embedded Android Workshop AnDevCon 3Embedded Android Workshop AnDevCon 3
Embedded Android Workshop AnDevCon 3
 
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
 
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
 
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
 
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
 
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
 
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
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 
Android Storage - Internal and External Storages
Android Storage - Internal and External StoragesAndroid Storage - Internal and External Storages
Android Storage - Internal and External Storages
 
Porting Android
Porting AndroidPorting Android
Porting Android
 
Android Internals
Android InternalsAndroid Internals
Android 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
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 

Ähnlich wie Headless Android at AnDevCon3

LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205Linaro
 
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 IVOpersys inc.
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux DevelopersOpersys inc.
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Docker, Inc.
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013dotCloud
 
Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Opersys 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.
 
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.
 
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo..."Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...Yandex
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentKarim Yaghmour
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Automated Snap Package build processes without the Build Service
Automated Snap Package build processes without the Build ServiceAutomated Snap Package build processes without the Build Service
Automated Snap Package build processes without the Build ServiceDani Llewellyn
 
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.
 
Introduction to Docker and Containers
Introduction to Docker and ContainersIntroduction to Docker and Containers
Introduction to Docker and ContainersDocker, Inc.
 
Android best practices 2015
Android best practices 2015Android best practices 2015
Android best practices 2015Sean Katz
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned RightScale
 
Porting Android ABS 2011
Porting Android ABS 2011Porting Android ABS 2011
Porting Android ABS 2011Opersys inc.
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'acorehard_by
 

Ähnlich wie Headless Android at AnDevCon3 (20)

LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205
 
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
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
 
Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013
 
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
 
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo..."Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
 
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
 
Automated Snap Package build processes without the Build Service
Automated Snap Package build processes without the Build ServiceAutomated Snap Package build processes without the Build Service
Automated Snap Package build processes without the Build Service
 
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...
 
Introduction to Docker and Containers
Introduction to Docker and ContainersIntroduction to Docker and Containers
Introduction to Docker and Containers
 
Android best practices 2015
Android best practices 2015Android best practices 2015
Android best practices 2015
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
 
Porting Android
Porting AndroidPorting Android
Porting Android
 
Porting Android ABS 2011
Porting Android ABS 2011Porting Android ABS 2011
Porting Android ABS 2011
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 

Mehr von Opersys inc.

Android Automotive
Android AutomotiveAndroid Automotive
Android AutomotiveOpersys inc.
 
Android 10 Internals Update
Android 10 Internals UpdateAndroid 10 Internals Update
Android 10 Internals UpdateOpersys inc.
 
Android Security Internals
Android Security InternalsAndroid Security Internals
Android Security InternalsOpersys inc.
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with PieOpersys inc.
 
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 HALOpersys 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 OreoOpersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoTOpersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave InternalsOpersys inc.
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in AndroidOpersys inc.
 
Brillo/Weave Internals
Brillo/Weave InternalsBrillo/Weave Internals
Brillo/Weave InternalsOpersys inc.
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowOpersys inc.
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in AndroidOpersys inc.
 

Mehr von Opersys inc. (16)

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
 
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
 
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
 
Brillo/Weave Internals
Brillo/Weave InternalsBrillo/Weave Internals
Brillo/Weave Internals
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 
Project Ara
Project AraProject Ara
Project Ara
 

Kürzlich hochgeladen

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 

Kürzlich hochgeladen (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 

Headless Android at AnDevCon3

  • 1. Headless Android AnDevCon III 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. 5.1. In numbers (/proc/meminfo) ● Full Android ● Headless Android MemTotal:          94096 kB 12% MemTotal:          93960 kB MemFree:            1628 kB MemFree:           13676 kB Buffers:               0 kB Buffers:               0 kB Cached:            31248 kB Cached:            48844 kB SwapCached:            0 kB SwapCached:            0 kB Active:            33288 kB Active:            29484 kB Inactive:          40900 kB Inactive:          44328 kB Active(anon):      25164 kB Active(anon):      25020 kB Inactive(anon):    28132 kB Inactive(anon):        0 kB Active(file):       8124 kB Active(file):       4464 kB Inactive(file):    12768 kB Inactive(file):    44328 kB Unevictable:        6672 kB 7% vs. 0% Unevictable:           0 kB Mlocked:               0 kB Mlocked:               0 kB SwapTotal:             0 kB SwapTotal:             0 kB SwapFree:              0 kB SwapFree:              0 kB Dirty:                 0 kB Dirty:                 0 kB Writeback:             0 kB Writeback:             0 kB AnonPages:         49648 kB AnonPages:         24988 kB Mapped:            17272 kB Mapped:            23820 kB Slab:               3492 kB Slab:               2808 kB SReclaimable:        972 kB SReclaimable:        892 kB SUnreclaim:         2520 kB SUnreclaim:         1916 kB PageTables:         4692 kB PageTables:         2096 kB NFS_Unstable:          0 kB NFS_Unstable:          0 kB Bounce:                0 kB Bounce:                0 kB WritebackTmp:          0 kB WritebackTmp:          0 kB CommitLimit:       47048 kB CommitLimit:       46980 kB Committed_AS:     710456 kB Committed_AS:     276908 kB VmallocTotal:     876544 kB VmallocTotal:     876544 kB VmallocUsed:       15456 kB VmallocUsed:        5256 kB VmallocChunk:     852996 kB VmallocChunk:     870404 kB 25
  • 26. 5.2. Processes ● Full Android ● Headless Android USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME root      1     0     268    180   c009b74c 0000875c S /init root      1     0     268    180   c009ebcc 0000875c S /init root      2     0     0      0     c004e72c 00000000 S kthreadd root      2     0     0      0     c004e8fc 00000000 S kthreadd root      3     2     0      0     c003fdc8 00000000 S ksoftirqd/0 root      3     2     0      0     c003fc70 00000000 S ksoftirqd/0 root      4     2     0      0     c004b2c4 00000000 S events/0 root      4     2     0      0     c004b22c 00000000 S events/0 root      5     2     0      0     c004b2c4 00000000 S khelper root      5     2     0      0     c004b22c 00000000 S khelper root      6     2     0      0     c004b22c 00000000 S suspend root      6     2     0      0     c004b2c4 00000000 S suspend root      7     2     0      0     c004b22c 00000000 S kblockd/0 root      7     2     0      0     c004b2c4 00000000 S kblockd/0 root      8     2     0      0     c004b22c 00000000 S cqueue root      8     2     0      0     c004b2c4 00000000 S cqueue root      9     2     0      0     c017c974 00000000 S kseriod root      9     2     0      0     c018179c 00000000 S kseriod root      10    2     0      0     c004b22c 00000000 S kmmcd root      10    2     0      0     c004b2c4 00000000 S kmmcd root      11    2     0      0     c0072f5c 00000000 S pdflush root      11    2     0      0     c006fc74 00000000 S pdflush root      12    2     0      0     c0072f5c 00000000 S pdflush root      12    2     0      0     c006fc74 00000000 S pdflush root      13    2     0      0     c00777bc 00000000 S kswapd0 root      13    2     0      0     c0079750 00000000 D kswapd0 root      14    2     0      0     c004b22c 00000000 S aio/0 root      14    2     0      0     c004b2c4 00000000 S aio/0 root      22    2     0      0     c0179ec0 00000000 S mtdblockd root      22    2     0      0     c017ef48 00000000 S mtdblockd root      23    2     0      0     c004b22c 00000000 S kstriped root      24    2     0      0     c004b22c 00000000 S hid_compat root      23    2     0      0     c004b2c4 00000000 S kstriped root      27    2     0      0     c004b22c 00000000 S rpciod/0 root      24    2     0      0     c004b2c4 00000000 S hid_compat root      28    1     232    136   c009ebcc 0000875c S /sbin/ueventd root      25    2     0      0     c004b2c4 00000000 S rpciod/0 system    29    1     804    260   c01a4834 afd0b6fc S /system/bin/servicemanager root      26    1     232    136   c009b74c 0000875c S /sbin/ueventd root      30    1     3864   568   ffffffff afd0bdac S /system/bin/vold system    27    1     804    196   c01a94a4 afd0b6fc S /system/bin/servicemanager root      31    1     3832   556   ffffffff afd0bdac S /system/bin/netd root      28    1     3864   308   ffffffff afd0bdac S /system/bin/vold root      32    1     664    264   c01b08f8 afd0c0cc S /system/bin/debuggerd root      29    1     3836   324   ffffffff afd0bdac S /system/bin/netd root      33    1     1268   588   c00522ac afd0bdac S /system/bin/rild root      30    1     664    188   c01b52b4 afd0c0cc S /system/bin/debuggerd root      34    1     60864  25992 c009ebcc afd0b844 S zygote radio     31    1     5396   448   ffffffff afd0bdac S /system/bin/rild media     35    1     17972  3712  ffffffff afd0b6fc S /system/bin/mediaserver root      32    1     60884  16476 c009b74c afd0b844 S zygote bluetooth 36    1     1256   572   c009ebcc afd0c59c S /system/bin/dbus­daemon root      37    1     812    316   c0213b90 afd0b45c S /system/bin/installd media     33    1     17976  1016  ffffffff afd0b6fc S /system/bin/mediaserver keystore  38    1     1744   432   c01b08f8 afd0c0cc S /system/bin/keystore bluetooth 34    1     1256   220   c009b74c afd0c59c S /system/bin/dbus­daemon shell     41    1     732    312   c01532bc afd0b45c S /system/bin/sh root      35    1     812    232   c02181f4 afd0b45c S /system/bin/installd root      42    1     3360   164   ffffffff 00008294 S /sbin/adbd keystore  36    1     1744   212   c01b52b4 afd0c0cc S /system/bin/keystore system    60    34    101104 28276 ffffffff afd0b6fc S system_server root      38    1     824    268   c00b8fec afd0c51c S /system/bin/qemud radio     99    34    81624  22600 ffffffff afd0c51c S com.android.phone shell     40    1     732    200   c0158eb0 afd0b45c S /system/bin/sh system    116   34    73768  20740 ffffffff afd0c51c S com.android.settings root      41    1     3364   168   ffffffff 00008294 S /sbin/adbd app_1     133   34    81120  25596 ffffffff afd0c51c S android.process.acore system    62    32    122088 25860 ffffffff afd0b6fc S system_server root      147   42    732    344   c003d8d0 afd0c3ac S /system/bin/sh app_19    116   32    77280  17520 ffffffff afd0c51c S  root      153   147   888    320   00000000 afd0b45c R ps com.android.inputmethod.latin radio     122   32    86100  17992 ffffffff afd0c51c S com.android.phone system    126   32    73316  19028 ffffffff afd0c51c S com.android.systemui app_25    136   32    76564  21276 ffffffff afd0c51c S com.android.launcher root      156   41    2132   452   c003da38 00110c84 S /bin/sh app_1     174   32    76092  18268 ffffffff afd0c51c S android.process.acore app_9     218   32    73168  17052 ffffffff afd0c51c S android.process.media app_23    260   32    82464  16584 ffffffff afd0c51c S com.android.mms app_28    277   32    72804  17852 ffffffff afd0c51c S com.android.email app_13    289   32    70796  16532 ffffffff afd0c51c S com.android.quicksearchbox app_21    309   32    69764  15552 ffffffff afd0c51c S com.android.protips app_18    318   32    70324  15812 ffffffff afd0c51c S com.android.music app_3     327   32    71484  16940 ffffffff afd0c51c S com.cooliris.media root      344   156   888    328   00000000 afd0b45c R /system/bin/ps 26
  • 27. 5.3. Services ● Full Android 0 phone: [com.android.internal.telephony.ITelephony] 1 iphonesubinfo: [com.android.internal.telephony.IPhoneSubInfo] ● Headless Android 2 simphonebook: [com.android.internal.telephony.IIccPhoneBook] 0 phone: [com.android.internal.telephony.ITelephony] 3 isms: [com.android.internal.telephony.ISms] 1 iphonesubinfo: [com.android.internal.telephony.IPhoneSubInfo] 4 opersys: [android.os.IOpersysService] 2 simphonebook: [com.android.internal.telephony.IIccPhoneBook] 5 diskstats: [] 3 isms: [com.android.internal.telephony.ISms] 6 appwidget: [com.android.internal.appwidget.IAppWidgetService] 4 diskstats: [] 7 backup: [android.app.backup.IBackupManager] 5 appwidget: [com.android.internal.appwidget.IAppWidgetService] 8 uimode: [android.app.IUiModeManager] 6 backup: [android.app.backup.IBackupManager] 7 uimode: [android.app.IUiModeManager] 9 usb: [android.hardware.usb.IUsbManager] 8 usb: [android.hardware.usb.IUsbManager] 10 audio: [android.media.IAudioService] 9 audio: [android.media.IAudioService] 11 wallpaper: [android.app.IWallpaperManager] 10 dropbox: [com.android.internal.os.IDropBoxManagerService] 12 dropbox: [com.android.internal.os.IDropBoxManagerService] 11 search: [android.app.ISearchManager] 13 search: [android.app.ISearchManager] 12 location: [android.location.ILocationManager] 14 location: [android.location.ILocationManager] 13 devicestoragemonitor: [] 15 devicestoragemonitor: [] 14 notification: [android.app.INotificationManager] 16 notification: [android.app.INotificationManager] 15 mount: [IMountService] 17 mount: [IMountService] 16 accessibility: [android.view.accessibility.IAccessibilityManager] 18 accessibility: [android.view.accessibility.IAccessibilityManager] 17 throttle: [android.net.IThrottleManager] 19 throttle: [android.net.IThrottleManager] 18 connectivity: [android.net.IConnectivityManager] 20 connectivity: [android.net.IConnectivityManager] 19 wifi: [android.net.wifi.IWifiManager] 21 wifi: [android.net.wifi.IWifiManager] 20 network_management: [android.os.INetworkManagementService] 22 network_management: [android.os.INetworkManagementService] 21 netstat: [android.os.INetStatService] 23 netstat: [android.os.INetStatService] 22 clipboard: [android.text.IClipboard] 24 input_method: [com.android.internal.view.IInputMethodManager] 23 statusbar: [com.android.internal.statusbar.IStatusBarService] 25 clipboard: [android.text.IClipboard] 24 device_policy: [android.app.admin.IDevicePolicyManager] 25 alarm: [android.app.IAlarmManager] 26 statusbar: [com.android.internal.statusbar.IStatusBarService] 26 vibrator: [android.os.IVibratorService] 27 device_policy: [android.app.admin.IDevicePolicyManager] 27 hardware: [android.os.IHardwareService] 28 window: [android.view.IWindowManager] 28 battery: [] 29 alarm: [android.app.IAlarmManager] 29 content: [android.content.IContentService] 30 vibrator: [android.os.IVibratorService] 30 account: [android.accounts.IAccountManager] 31 hardware: [android.os.IHardwareService] 31 permission: [android.os.IPermissionController] 32 battery: [] 32 cpuinfo: [] 33 content: [android.content.IContentService] 33 meminfo: [] 34 account: [android.accounts.IAccountManager] 34 activity: [android.app.IActivityManager] 35 permission: [android.os.IPermissionController] 35 package: [android.content.pm.IPackageManager] 36 cpuinfo: [] 36 telephony.registry: [com.android.internal.telephony.ITelephonyRegistry] 37 meminfo: [] 37 usagestats: [com.android.internal.app.IUsageStats] 38 activity: [android.app.IActivityManager] 38 batteryinfo: [com.android.internal.app.IBatteryStats] 39 package: [android.content.pm.IPackageManager] 39 power: [android.os.IPowerManager] 40 telephony.registry: [com.android.internal.telephony.ITelephonyRegistry] 40 entropy: [] 41 usagestats: [com.android.internal.app.IUsageStats] 41 sensorservice: [android.gui.SensorServer] 42 media.audio_policy: [android.media.IAudioPolicyService] 42 batteryinfo: [com.android.internal.app.IBatteryStats] 43 media.camera: [android.hardware.ICameraService] 43 power: [android.os.IPowerManager] 44 media.player: [android.media.IMediaPlayerService] 44 entropy: [] 45 media.audio_flinger: [android.media.IAudioFlinger] 45 sensorservice: [android.gui.SensorServer] 46 SurfaceFlinger: [android.ui.ISurfaceComposer] 47 media.audio_policy: [android.media.IAudioPolicyService] 48 media.camera: [android.hardware.ICameraService] 49 media.player: [android.media.IMediaPlayerService] 50 media.audio_flinger: [android.media.IAudioFlinger] 27
  • 28. 6. Housekeeping ● Work in progress / proof-of-concept ● Do NOT ship a product with this just yet ● Branch in cyborgstack: cyborgstack.org ● 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 ... 28
  • 29. 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 ... VZADC3 karim.yaghmour@opersys.com 29