SlideShare a Scribd company logo
1 of 67
Download to read offline
Develop Community-based
     Android Distribution and
     Upstreaming Experience



Jim Huang ( 黃敬群 ) <jserv@0xlab.org>
Developer & Co-Founder, 0xlab
http://0xlab.org/

                                Nov 23, 2011 / droidcon.NL
Rights to copy
                                                                    © Copyright 2011 0xlab
                                                                           http://0xlab.org/
                                                                            contact@0xlab.org
Attribution – ShareAlike 3.0
You are free                                                  Corrections, suggestions, contributions and
                                                                               translations are welcome!
   to copy, distribute, display, and perform the work
   to make derivative works                                                  Latest update: Nov 23, 2011
   to make commercial use of the work
Under the following conditions
      Attribution. You must give the original author credit.
      Share Alike. If you alter, transform, or build upon this work, you may distribute the
      resulting work only under a license identical to this one.
   For any reuse or distribution, you must make clear to others the license terms of this
   work.
   Any of these conditions can be waived if you get permission from the copyright holder.
Your fair use and other rights are in no way affected by the above.
License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode
0x1ab = 162+16x10+11 = 427
 (founded on April 27, 2009)

0xlab is another Hexspeak.
About Me   (1) Come from Taiwan
           (2) Contributor of Android
           Open Source Project (AOSP)
           (3) Developer, Linaro
           (4) Contributed to GNU
           Classpath / Kaffe, Linux
           internationalization (i18n),
           Openmoko
Commercial Partners of 0xlab
   ARM / Linaro
        0xlab contributes to Linaro Android since the first line of code

   AzureWave
        Build wireless networking & image processing solutions

   Mediatek
        Android based consumer products

   Open Embedded Software Foundation
        0xlab contributes to the reference implementation


                                 Eventually, partners can benefit from open
http://0xlab.org/partners.html   source efforts and our experience.
Agenda   (1) Reasons to build Android
            distribution
         (2) Lesson learned from AOSP
         (3) The methods to enhace
            Android software stack
         (4) Go upstream
Reasons to build Android
           Distribution
based on non typical open source projects
The reason why we built community
       Android Distribution:

  Initially, we just wanted to enable wireless
   connectivity features on Android per our
           hardware partnters requested.


But, we never thought that it was difficult to do
                things efficiently.
0xdroid: enhanced Android distribution
            Beagleboard

                                                           DevKit8000

Pandaboard




We suffered from performance and usability issues in AOSP. 0xdroid
is basically the environment where we can develop and experiment.
What does 0xdroid deliver?

• Hardware enablement: Beagleboard (TI OMAP3),
  Pandaboard (TI OMAP4), Snowball (ST-Ericsson
  Ux500)
• Provide full source code for HAL
• Usability: software cursor, window manager fix,
  large screen tweaks, network connectivity fix
• Performance: ARM specific optimizations,
  graphics enhancement
• Features: Bluetooth HID (keyboard/mouse),
  external modem, 3D effects, customized
  Launcher
But, 0xlab is not really making yet
  another Android distribution.
  Our idea is to help community.

0xdroid is just a testbed (or reference implementation),
and the valuable changes should be merged in
    upstream or other community projects.
Strategy and Policy

• open source efforts to improve AOSP
• We focus on small-but-important area of Android.
   – toolchain, libc, dynamic linker, skia, software GL,
     system libraries, HAL, UX
• Develop system utilities for Android
  – benchmark, black-box testing tool, validation
    infrastructure
• Feature driven development
   – Faster boot/startup time, Bluetooth profile, visual
     enhancements
• Submit and share changes to...
  – AOSP, CyanogenMod, Android-x86
  – Linaro
Working Model
Rowboat   CyanogenMod   Android-x86
Where does Linaro fit?
                Community (upstream)
                   Aligned
                  upstream
                  investment

                                     Distributio
                                    ns take
                Linaro              from
 Common                             upstream
Linux Core
 Software
                       Evaluation
                      Builds

                          OEM
                         Linux
                         Downstream
Linaro Engineering Unit
                                                        SoC support and
                                                        SoC support and
Optimization & Innovation
Optimization & Innovation
                                                       optimization
                                                       optimization


                                   Platform
   Working Groups
                                  Engineering
  Kernel Consolidation
  Kernel Consolidation
                                    Validation &
                                   Benchmarking
        Toolchain
        Toolchain
                                  Evaluation Builds
                                   Android, Ubuntu,
        Graphics
        Graphics                    Chrome, IVI…



   Power Management
   Power Management               Infrastructure
                                  Release management
            :
       Multimedia
       Multimedia

                             Validation, benchmarking,
                             Validation, benchmarking,
                             release management
                              release management
Joint-Development Efforts
                                                (demo video)
• Milestone 0x4
   ●   http://www.youtube.com/watch?v=OGpYk1p1UPI
       simplified deployment, theme-able Android launcher,
       Automated Testing Infrastructure (esuit + CTS), external
       modem support, 3D Eye-candy Effects, Performance
       Improvements for ARM
• Milestone 0x7
   ●   http://www.youtube.com/watch?v=_3dT68MOzz0
       Linaro powered infrastructure, further ARM optimizations,
       real fast boot-time solution for Android, validation
       framework
Lession Learned from AOSP
Let's go Upstream!
Unfortunately, contributing to AOSP
           is an __art__.

  You never know how Google thinks of your
patches exactly, even through Gerrit (code review system).
Problems We faced

• AOSP looks like “An Open Source Protector"
• No public roadmap
   – Therefore, we ignore the modifications against
     Android framework in public activities.
• The merged changes usually show up in next 1 or
  2 public release.
   – It is really hard to introduce/track the relevant
     changes.
• Not clear discussions on android-contrib mailing-
  list. Sometimes, you have to have private
  communications to Google engineers.
• Version control / Code Review on invisible
  repositories (internal and far-away GIT tree)
Change represented in Gerrit
                                                  gerrit        upstream


  Change 123

   Patchset 1                      dev-b          dev-a
    Commit cdeb34


                                 Create
                                  Local    % git checkout -b topic-branch
                                 Branch
   Patchset 2
     Commit 41dbe5


                                  work




Google provides the great code   Push      % git push gerrit 
review tool for AOSP, but...      to         HEAD:refs/for/master
                                 Gerrit
Flow of AOSP submitted changes

           Create
            Local
           Branch




                        Fix
            work      commit     rejected


                      rebased!



           Push to               Review                 Upstream repo
            Gerrit                          approved/
                                            submitted




Here “upstream” means AOSP master and Google internal tree.
No explicit change history
                              No explicit change history
                                Android style open source model
                                Android style open source model




Gap between Goolge internal
       GIT/Perforce
      and AOSP Git
After Gingerbread, it gets much clear for
                              toolchain part
prebuilt/
prebuilt/
commit 81cce608ab19dcd0aaf7d08d57a4460229e43c45
commit 81cce608ab19dcd0aaf7d08d57a4460229e43c45
Author: Jing Yu <jingyu@google.com>
Author: Jing Yu <jingyu@google.com>
Date:
Date:   Tue Dec 14 10:55:23 2010 -0800
        Tue Dec 14 10:55:23 2010 -0800

   Patched toolchain to fix a few gcc and binutils bugs.
   Patched toolchain to fix a few gcc and binutils bugs.

   Sources to build this toolchain are listed on arm-eabi-4.4.3/SOURCES
   Sources to build this toolchain are listed on arm-eabi-4.4.3/SOURCES

linux-x86/toolchain/arm-eabi-4.4.3/SOURCES
linux-x86/toolchain/arm-eabi-4.4.3/SOURCES

build/ synced to
build/ synced to
        commit 4cc02faaa7e8828f9458b1828a6f85e7791ae2aa
        commit 4cc02faaa7e8828f9458b1828a6f85e7791ae2aa
        Author: Jim Huang <jserv@0xlab.org>
        Author: Jim Huang <jserv@0xlab.org>
        Date:
        Date:    Fri Aug 20 23:30:37 2010 +0800
                 Fri Aug 20 23:30:37 2010 +0800

   And rollback the following 3 patches.
   And rollback the following 3 patches.
   commit de263c26a7680529baca731c003bc58b68d72511
   commit de263c26a7680529baca731c003bc58b68d72511
   Author: Jing Yu <jingyu@google.com>
   Author: Jing Yu <jingyu@google.com>
   Date:
   Date:   Thu Aug 12 15:52:15 2010 -0700
           Thu Aug 12 15:52:15 2010 -0700
                           Although we can check git log, we
                           Although                 git log, we
                           still have no idea why they changed
                           still have no idea why       changed
Observed AOSP Working Model

• “master” branch in Android
  is the bridge between AOSP and Google internal
  tree. There are many contributions merged from
  companies, organizations, and individuals. But no
  efficient code review available for non-existing
  repositories. And, only few Google engineers do
  review changes.
• Master branch = the latest AOSP + Partial changes
  by Google (bug-fixes from internal tree)
   – Not fully verified codebase.
• The best hints are the opinions written by Google
  engineers inside Gerrit.
  – Send patches if possible
My interpretation of
     Android:
 Hardware is Revolution;
   Sotware is basically
         Evolution;
Android is Hardware-driven
   Software Revolution
Functional View (Android 1.5)
                                Applications
                                Applications
   Gallery         Phone         Web Browser    Google Maps   ・・・・・

                            Android Framework
                            Android Framework
  Activity        Window           Content                       Notification
                                                View System
  Manager         Manager          Manager                        Manager

  Package        Telephony        Resource        Location
  Manager         Manager         Manager         Manager


                            System Library
                            System Library          Android Runtime
                                                    Android Runtime
SurfaceFlinger
SurfaceFlinger   OpenCORE
                 OpenCORE          SQLite                Class Library

                                                    Dalvik Virtual Machine
                                                    Dalvik Virtual Machine
OpenGL|ES
OpenGL|ES        AudioFlinger
                 AudioFlinger      WebKit

    SGL
    SGL          OpenSSL          bionic libc
                                  bionic libc     Freetype


                                 Linux Kernel
                                 Linux Kernel
Functional View (Android 2.3)
                                           Applications
                                           Applications
              Gallery         Phone         Web Browser    Google Maps   ・・・・・

                                       Android Framework
                                       Android Framework
             Activity        Window           Content                       Notification
                                                           View System
             Manager         Manager          Manager                        Manager

             Package         Telephony       Resource        Location
             Manager          Manager        Manager         Manager         RenderScript

OpenGL|ES 2.x accelerated.             System Library
                                       System Library          Android Runtime
                                                               Android Runtime
     Drop 2D accel
           SurfaceFlinger
           SurfaceFlinger   StageFright       SQLite                Class Library
                                               V8 bridge       Dalvik Virtual Machine
                                                               Dalvik Virtual Machine
GLES 2.0   OpenGL|ES
           OpenGL|ES        AudioFlinger
                            AudioFlinger      WebKit
                                                                            SMP improvements
               Skia
               Skia          OpenSSL         bionic libc
                                             bionic libc     Freetype
                                                                                           JIT compiler
Skia supports GPU backend                      SMP fixes
       In Android ICS                       Linux Kernel
                                            Linux Kernel
                                    The overall design is consistent, but the current model
                                    The overall design is consistent, but the current model
                                    prevents from diverse community contributions.
                                    prevents from diverse community contributions.
AOSP statistics for Gingerbread                                       (Dec 2010)


  4204   google.com

  1354   android.com                           17     openbossa.org

  98     sonyericsson.com                      11     nxp.com

  71     gmail.com                             11     linux.org.tw

  39     codeaurora.org                        10     ti.com

  39     samsung.com                           10     acer.com.tw

  38     intel.com                             8      themaw.net
                           Because Android
  32     nokia.com          imported BlueZ     8      garmin.com

  32     holtmann.org
                          as Bluetooth stack   7      snpe.rs

  29     0xlab.org                             7      motorola.com

  25     trusted-logic.com                     7      mc.pp.se

                                               7      googlemail.com
The number are commits since Froyo release.
However, the valuable changes from community such as
CyanogenMod are usually absent due to long-time review process.
Methods to Enhance Android
        Software Stack
when building custom Android distribution and
     merging changes from community
Mission in our development:
    Improve UX in SoC



  UX = User Experience
  SoC = Integrated Computing Anywhere
Quality in custom Android Distribution

  • 0xlab delivers the advantages of open source
    software and development.
     – Quality relies on two factors: continuous
       development + strong user feedback
  • Several utilities are developed to ensure the
    quality and released as open source software.
     – 0xbench (Android benchmarking tool)
     – ASTER (Android System Testing Environment and Runtime)
     – LAVA (Linaro Automated Validation Architecture)
  • In the meanwhile, performance is improved by
    several patches against essential components.
LAVA: Automated Validation Infrastructure for Android

Android benchmark running on LAVA.      Android support on LAVA
Automated Validation flow includes       https://wiki.linaro.org/Platform/Validation/LAVA
from deploy, then reboot, testing,
benchmark running, and result submit.        Android related commands in LAVA:
                                              * deploy_linaro_android_image
                                              * boot_linaro_android_image
                                              * test_android_basic
                                              * test_android_monkey
                                              * test_android_0xbench
                                              * submit_results_on_host
0xbench:               comprehensive open source benchmark
                                                  suite for Android
• A set of system utilities for
  Android to perform
  comprehensive system
  benchmarking
  • Dalvik VM performance
  • OpenGL|ES performance
  • Android Graphics framework
    performance
  • I/O performance
  • JavaScript engine performance
  • Connectivity performance
  • Micro-benchmark: stanard C library,
    system call, latency, Java
    invocation, ...


http://code.google.com/p/0xbench/
: 0xBench
Collect and Analyze results on
                   server-side
Android Functional Testing
(1) stress test
(2) Automated test
Stress Test

• According to CDD (Compatilbility Definition
  Document), Device implementations MUST include
  the Monkey framework, and make it available for
  applications to use.
• monkey is a command that can directly talks to
  Android framework and emulate random user input.
  adb shell monkey ­p your.package.name ­v 500


• Decide the percentage of touch events, keybord
  events, etc., then run automatically.
ASTER: Automated Test

        • Blackbox-test vs. Whitebox-test
        • An easy to use automated testing tool with IDE
           – Built upon MoneyRunner
        •   Batch execution of visual test scripts
        •   Multiple chains of recall commands
        •   Designed for non-programmer or Q&A engineers
        •   Use OpenCV to recognize icons or UI hints




http://code.google.com/p/aster/
Prototype in 2009
ASTER IDE in 2011
Bring Enhancements back to
        Community
What do we deliver to communty?

• Patches merged in AOSP, CyanogenMod, and
  Android-x86
• Implement 100% open source OpenGL|ES
  adaptation based on Mesa/3D into Android
   – The world-first, important to Android-x86
• Performance: ARM specific optimizations,
  graphics enhancement
• Features: Bluetooth HID (keyboard/mouse),
  external modem, 3D effects, customized
  Launcher
Arithmetic on Nexus S   Tune Dalvik VM performance (armv7)
Apply extra performance tweaks against optimized build
2D on Nexus S
                (NEON)
Benchmark: 2D (arm11-custom)
Benchmark: 3D (arm11-custom; no GPU)




This explains that we have several system tools and development flow
to help customers/community to verify the performance and improve.
bionic libc

• Android C/C++ library
• 0xlab’s Optimizations (merged in AOSP)
  – Memory operations: Use ARMv6 unaligned access to
    optimize usual cases
  – reused by Dalvik to accelerate primitive byte order
  – Endian/Data Type conversion: Use ARMv6 fast endian
    primitives. Useful for TCP/IP (big endian / little endian
    converting)
  – Various ARM optimized string operations
     • memcpy, strcmp, strcpy, memset
Dynamic Linker Optimizations
Why and How?

• The major reason to optimize dynamic linker is to
  speed up application startup time.
• Approaches:
   ● Implement GNU style hash support for bionic

     linker
   ● Prelinker improvements: incremental global

     prelinking
       –   reduce the number of ELF symbol lookup
           aggressively
• Changed parts
  – apriori, soslim, linker, elfcopy, elfutils
(normalized) Dynamic Link time

 1
0.9
0.8
0.7
0.6
                                                                                                                            lp
0.5
                                                                                                                            gp
0.4                                                                                                                         re.gp
0.3                                                                                                                         re.pe.gp
0.2                                                                                                                         re.pe.pgp.gp
                                                                                                                            re.pe.pgp.gp.are
0.1
 0
              ation




                                              ess
                              ver




                                                                                                          rild


                                                                                                                      lld
                                                                        on


                                                                                 ggerd



                                                                                                      r
                                                         ore




                                                                                                  nage




                                                                                                                 insta
                                                                   -daem
                         iaser


                                         proc


                                                    keyst
          anim




                                                                             debu


                                                                                              cema
                                    app_
                      med




                                                               dbus
      boot




                                                                                         servi
(normalized) Symbol Lookup number

  1


0.8


0.6
                                                                                                                         elf.lp
                                                                                                                         elf.gp
0.4                                                                                                                      elf.re.gp
                                                                                                                         elf.re.pe.gp
0.2                                                                                                                      elf.re.pe.pgp.gp
                                                                                                                         elf.re.pe.pgp.gp.are

  0
                                                                     on
                                         ess




                                                                              ggerd




                                                                                                       rild


                                                                                                                   lld
               ation




                                                      ore
                               ver




                                                                                                   r
                                                                                               nage




                                                                                                              insta
                                                                -daem
                          iaser


                                          proc


                                                 keyst
           anim




-0.2
                                                                          debu


                                                                                           cema
                                     app_
                       med




                                                            dbus
       boot




                                                                                      servi
DT_GNU_HASH: visible dynamic linking improvement =
     Better hash function (few collisions)
     + Drop unnecessary entry from hash
     + Bloom filter

                      void foo (){
     libc.so            printf(“fooooo”);
      printf            bar();
                      }


    libfoo.so
       foo
       bar


                         libfoo.so
           DT_GNU_HASH               DT_HASH
           foo                       foo
           bar                       bar
                                     printf
Symbols lookup#    fail#      gnu hash filtered by bloom
                 in ELF
     gnu.gp         3758    23702      19950      23310               18234(78%)

     gnu.gp.re      3758    20544      16792      19604               14752(75%)

     gnu.lp        61750   460996    399252     450074               345032(76%)

     gnu.lp.re     61750   481626    419882     448492               342378(76%)



                                            H = {x, y, z} = hash functions
                                            Hash function may collision
                                              → Bloom filter may got false positives
Bit array




NOTE: Android 4.0 removes the support of prelinker,
but gnu style hash is still useful.
Bluetooth HID (keyboard/mouse)




CyanogenMod merged the feature since version 6.x. (2010q2)
Android 4.0 finally provides its own implementation though. (2011q4)
UI customizations
• Provide several UI/Launcher combination for
  small and large screen devices.
  • Sizing from HVGA, VGA, SVGA (Phone), to 720p/1080p (TV)
• Either modified Android Launcher or new
  replacement
• Licensed under Apache Software License
Products with Advanced 3D UI
• 3D effects and the ARM optimizations are enabled in
  Qualcomm platforms w/ and w/o GPU accelerations
• Demo video: http://www.youtube.com/watch?v=kNyVXIEG3gg
Android Boot Time Optimizations
Write Tiny Boot loader to Speed up

Qi Boot-loader                                         Qi
                                                       Boot-oader
                                                                    U-Boot + XLoader


                                      Size             ~30K         ~270K+20K
   Only one stage boot-              Time to Kernel   <1s          > 5s
    loader                            Usage            Product      Engineering

   Small footprint ~30K              Code             Simple       Complicated


   Currently support
    −   iMX31
    −   Samsung 24xx
    −   Beagleboard
   KISS concept
    −   Boot device and load kernel
Optimized ARM Hibernation
     • Based on existing technologies thus requires little
       modification to userspace
       – TuxOnIce
     • Release clean-pages before suspend
     • Swap out dirty-pages before save image
     • Image size reduced leads to faster resume time.




Demo video: http://www.youtube.com/watch?v=pvcQiiikJDU
Further Boot Time Optimizations
• Based on existing technologies thus requires little
• Save the heap image (like core dump) of Zygote
  after preloading classes
• Modify Dalvik to make hibernation image after
  system init and before Launcher startup
• Parallize Android init
• Cache & share JIT'ed code fragment
Go Upstream!
   Patches are dead, long live the Android



Let's think about the collaboration with AOSP,
The practice way for upstreaming

• “Buffer” is required.
   – CyanogenMod
   – Linaro
• You have to jump over the gap (software revolution
  by Google).
• CyanogenMod is proven as the great example to
  work with AOSP in some way.
   – Large and active user base
   – Developers can submit verified patches to AOSP
     for reviewing
• Acceptable fields
  – System libraries
  – Application / framework bugs
Working with Linaro
     • Linaro kernel becomes members most advanced
     • Vendor BSP and Linaro landing team engineers work
       together
     • Get latest software on latest SoCs with upstream support




"merge window" role
Conclusion

• Android is indeed a platform with source code
  available instead of a typical open source project.
• Collaboration is important especially to Android
  variants. You have to solve problems with the
  help from community members.
• Leverage the power of community to make your
  software validated well.
• Before tracking large scale of Android source
  code, it would be better to utilize the tools.
• Be open minded
Resources
                聯繫 0xlab/0xdroid 開發團隊
0xdroid Roadmap:
http://code.google.com/p/0xdroid/wiki/Roadmap
Source repository: http://gitorious.org/+0xlab
Wiki: http://code.google.com/p/0xdroid/w/list
Demo videos: http://www.youtube.com/0xlab
Mailing-list:
   General discussion:
   http://groups.google.com/group/0xlab-discuss
   Technical / Development:
   http://groups.google.com/group/0xlab-devel
IRC channel (FreeNode): #0xlab
http://0xlab.org

More Related Content

What's hot

Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Doug Hawkins
 
Shorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsShorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsNational Cheng Kung University
 
Develop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsDevelop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsNational Cheng Kung University
 
Build Community Android Distribution and Ensure the Quality
Build Community Android Distribution and Ensure the QualityBuild Community Android Distribution and Ensure the Quality
Build Community Android Distribution and Ensure the QualityNational Cheng Kung University
 
Dalvik Vm &amp; Jit
Dalvik Vm &amp; JitDalvik Vm &amp; Jit
Dalvik Vm &amp; JitAnkit Somani
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsNational Cheng Kung University
 
Android media framework overview
Android media framework overviewAndroid media framework overview
Android media framework overviewJerrin George
 
Pjproject su Android: uno scontro su più livelli
Pjproject su Android: uno scontro su più livelliPjproject su Android: uno scontro su più livelli
Pjproject su Android: uno scontro su più livelliGiacomo Bergami
 
The anatomy and philosophy of Android - Google I/O 2009
The anatomy and philosophy of Android - Google I/O 2009The anatomy and philosophy of Android - Google I/O 2009
The anatomy and philosophy of Android - Google I/O 2009Viswanath J
 
Android Internals (This is not the droid you’re loking for...)
Android Internals (This is not the droid you’re loking for...)Android Internals (This is not the droid you’re loking for...)
Android Internals (This is not the droid you’re loking for...)Giacomo Bergami
 
Extending Android with New Devices
Extending Android with New DevicesExtending Android with New Devices
Extending Android with New DevicesShree Kumar
 
Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization mentoresd
 
Iz Pack
Iz PackIz Pack
Iz PackInria
 
Skype testing overview
Skype testing overviewSkype testing overview
Skype testing overviewQA Club Kiev
 

What's hot (20)

Android IPC Mechanism
Android IPC MechanismAndroid IPC Mechanism
Android IPC Mechanism
 
Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011Inside Android's Dalvik VM - NEJUG Nov 2011
Inside Android's Dalvik VM - NEJUG Nov 2011
 
Shorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsShorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation Systems
 
Develop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsDevelop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM Boards
 
Build Community Android Distribution and Ensure the Quality
Build Community Android Distribution and Ensure the QualityBuild Community Android Distribution and Ensure the Quality
Build Community Android Distribution and Ensure the Quality
 
Introduction to Android Window System
Introduction to Android Window SystemIntroduction to Android Window System
Introduction to Android Window System
 
ARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- OverviewARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- Overview
 
Dalvik Vm &amp; Jit
Dalvik Vm &amp; JitDalvik Vm &amp; Jit
Dalvik Vm &amp; Jit
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
 
Implement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVMImplement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVM
 
Program development tools
Program development toolsProgram development tools
Program development tools
 
Android media framework overview
Android media framework overviewAndroid media framework overview
Android media framework overview
 
Pjproject su Android: uno scontro su più livelli
Pjproject su Android: uno scontro su più livelliPjproject su Android: uno scontro su più livelli
Pjproject su Android: uno scontro su più livelli
 
The anatomy and philosophy of Android - Google I/O 2009
The anatomy and philosophy of Android - Google I/O 2009The anatomy and philosophy of Android - Google I/O 2009
The anatomy and philosophy of Android - Google I/O 2009
 
Android Internals (This is not the droid you’re loking for...)
Android Internals (This is not the droid you’re loking for...)Android Internals (This is not the droid you’re loking for...)
Android Internals (This is not the droid you’re loking for...)
 
Extending Android with New Devices
Extending Android with New DevicesExtending Android with New Devices
Extending Android with New Devices
 
Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization
 
Iz Pack
Iz PackIz Pack
Iz Pack
 
Practice of Android Reverse Engineering
Practice of Android Reverse EngineeringPractice of Android Reverse Engineering
Practice of Android Reverse Engineering
 
Skype testing overview
Skype testing overviewSkype testing overview
Skype testing overview
 

Viewers also liked

軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維 軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維 National Cheng Kung University
 
從Arduino 與 8051之戰看台灣產業根深蒂固的硬體 costdown思維
從Arduino 與 8051之戰看台灣產業根深蒂固的硬體 costdown思維從Arduino 與 8051之戰看台灣產業根深蒂固的硬體 costdown思維
從Arduino 與 8051之戰看台灣產業根深蒂固的硬體 costdown思維鍾誠 陳鍾誠
 
用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端鍾誠 陳鍾誠
 

Viewers also liked (6)

Implement Checkpointing for Android
Implement Checkpointing for AndroidImplement Checkpointing for Android
Implement Checkpointing for Android
 
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維 軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
軟體又熱又平又擠:淺談開放原始碼軟體衝擊下的新思維
 
ARM and SoC Traning Part II - System
ARM and SoC Traning Part II - SystemARM and SoC Traning Part II - System
ARM and SoC Traning Part II - System
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
從Arduino 與 8051之戰看台灣產業根深蒂固的硬體 costdown思維
從Arduino 與 8051之戰看台灣產業根深蒂固的硬體 costdown思維從Arduino 與 8051之戰看台灣產業根深蒂固的硬體 costdown思維
從Arduino 與 8051之戰看台灣產業根深蒂固的硬體 costdown思維
 
用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端
 

Similar to Develop Community-based Android Distribution and Upstreaming Experience

0xdroid -- community-developed Android distribution by 0xlab
0xdroid -- community-developed Android distribution by 0xlab0xdroid -- community-developed Android distribution by 0xlab
0xdroid -- community-developed Android distribution by 0xlabNational Cheng Kung University
 
Fundamentals of Using Open Source Code to Build Products
Fundamentals of Using Open Source Code to Build ProductsFundamentals of Using Open Source Code to Build Products
Fundamentals of Using Open Source Code to Build ProductsBrian Warner
 
Agile & ALM tools
Agile & ALM toolsAgile & ALM tools
Agile & ALM toolsLarry Cai
 
Linux on System z Update: Current & Future Linux on System z Technology
Linux on System z Update: Current & Future Linux on System z TechnologyLinux on System z Update: Current & Future Linux on System z Technology
Linux on System z Update: Current & Future Linux on System z TechnologyIBM India Smarter Computing
 
Gerrit linuxtag2011
Gerrit linuxtag2011Gerrit linuxtag2011
Gerrit linuxtag2011thkoch
 
OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!Flavio Percoco Premoli
 
Enhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_osEnhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_osArnav Gupta
 
14180203 an-introduction-to-android
14180203 an-introduction-to-android14180203 an-introduction-to-android
14180203 an-introduction-to-androidNeha Jain
 
LJC-Unconference-2023-Keynote.pdf
LJC-Unconference-2023-Keynote.pdfLJC-Unconference-2023-Keynote.pdf
LJC-Unconference-2023-Keynote.pdfEmilyJiang23
 
Kubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemKubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemTomoya Fujita
 
O futuro do .NET : O que eu preciso saber
O futuro do .NET : O que eu preciso saberO futuro do .NET : O que eu preciso saber
O futuro do .NET : O que eu preciso saberDanilo Bordini
 
2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficiently2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficientlyBruno Capuano
 
Qi -- Lightweight Boot Loader Applied in Mobile and Embedded Devices
Qi -- Lightweight Boot Loader Applied in Mobile and Embedded DevicesQi -- Lightweight Boot Loader Applied in Mobile and Embedded Devices
Qi -- Lightweight Boot Loader Applied in Mobile and Embedded DevicesNational Cheng Kung University
 
Linaro and Android Kernel
Linaro and Android KernelLinaro and Android Kernel
Linaro and Android KernelJohn Lee
 

Similar to Develop Community-based Android Distribution and Upstreaming Experience (20)

0xdroid -- community-developed Android distribution by 0xlab
0xdroid -- community-developed Android distribution by 0xlab0xdroid -- community-developed Android distribution by 0xlab
0xdroid -- community-developed Android distribution by 0xlab
 
Fundamentals of Using Open Source Code to Build Products
Fundamentals of Using Open Source Code to Build ProductsFundamentals of Using Open Source Code to Build Products
Fundamentals of Using Open Source Code to Build Products
 
Agile & ALM tools
Agile & ALM toolsAgile & ALM tools
Agile & ALM tools
 
ARM
ARMARM
ARM
 
Linux on System z Update: Current & Future Linux on System z Technology
Linux on System z Update: Current & Future Linux on System z TechnologyLinux on System z Update: Current & Future Linux on System z Technology
Linux on System z Update: Current & Future Linux on System z Technology
 
Arm
ArmArm
Arm
 
Gerrit linuxtag2011
Gerrit linuxtag2011Gerrit linuxtag2011
Gerrit linuxtag2011
 
OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!
 
Current & Future Linux on System z Technology
Current & Future Linux on System z TechnologyCurrent & Future Linux on System z Technology
Current & Future Linux on System z Technology
 
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
 
14180203 an-introduction-to-android
14180203 an-introduction-to-android14180203 an-introduction-to-android
14180203 an-introduction-to-android
 
LJC-Unconference-2023-Keynote.pdf
LJC-Unconference-2023-Keynote.pdfLJC-Unconference-2023-Keynote.pdf
LJC-Unconference-2023-Keynote.pdf
 
Kubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemKubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster System
 
Collabograte
CollabograteCollabograte
Collabograte
 
What's New in RHEL 6 for Linux on System z?
What's New in RHEL 6 for Linux on System z?What's New in RHEL 6 for Linux on System z?
What's New in RHEL 6 for Linux on System z?
 
O futuro do .NET : O que eu preciso saber
O futuro do .NET : O que eu preciso saberO futuro do .NET : O que eu preciso saber
O futuro do .NET : O que eu preciso saber
 
2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficiently2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficiently
 
olibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linuxolibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linux
 
Qi -- Lightweight Boot Loader Applied in Mobile and Embedded Devices
Qi -- Lightweight Boot Loader Applied in Mobile and Embedded DevicesQi -- Lightweight Boot Loader Applied in Mobile and Embedded Devices
Qi -- Lightweight Boot Loader Applied in Mobile and Embedded Devices
 
Linaro and Android Kernel
Linaro and Android KernelLinaro and Android Kernel
Linaro and Android Kernel
 

More from National Cheng Kung University

PyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimePyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimeNational Cheng Kung University
 
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明National Cheng Kung University
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明National Cheng Kung University
 
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明National Cheng Kung University
 
Lecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationLecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationNational Cheng Kung University
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學National Cheng Kung University
 
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明National Cheng Kung University
 

More from National Cheng Kung University (20)

PyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimePyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtime
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明
 
Interpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratchInterpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratch
 
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
 
Construct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoTConstruct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoT
 
The Internals of "Hello World" Program
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" Program
 
How A Compiler Works: GNU Toolchain
How A Compiler Works: GNU ToolchainHow A Compiler Works: GNU Toolchain
How A Compiler Works: GNU Toolchain
 
Virtual Machine Constructions for Dummies
Virtual Machine Constructions for DummiesVirtual Machine Constructions for Dummies
Virtual Machine Constructions for Dummies
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
 
從線上售票看作業系統設計議題
從線上售票看作業系統設計議題從線上售票看作業系統設計議題
從線上售票看作業系統設計議題
 
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
 
Xvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisorXvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisor
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Priority Inversion on Mars
Priority Inversion on MarsPriority Inversion on Mars
Priority Inversion on Mars
 
Lecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationLecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and Implementation
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
 
Open Source from Legend, Business, to Ecosystem
Open Source from Legend, Business, to EcosystemOpen Source from Legend, Business, to Ecosystem
Open Source from Legend, Business, to Ecosystem
 
Summer Project: Microkernel (2013)
Summer Project: Microkernel (2013)Summer Project: Microkernel (2013)
Summer Project: Microkernel (2013)
 
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
 

Recently uploaded

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
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
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
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
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
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
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
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 

Recently uploaded (20)

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
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
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
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
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
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
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 

Develop Community-based Android Distribution and Upstreaming Experience

  • 1. Develop Community-based Android Distribution and Upstreaming Experience Jim Huang ( 黃敬群 ) <jserv@0xlab.org> Developer & Co-Founder, 0xlab http://0xlab.org/ Nov 23, 2011 / droidcon.NL
  • 2. Rights to copy © Copyright 2011 0xlab http://0xlab.org/ contact@0xlab.org Attribution – ShareAlike 3.0 You are free Corrections, suggestions, contributions and translations are welcome! to copy, distribute, display, and perform the work to make derivative works Latest update: Nov 23, 2011 to make commercial use of the work Under the following conditions Attribution. You must give the original author credit. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode
  • 3. 0x1ab = 162+16x10+11 = 427 (founded on April 27, 2009) 0xlab is another Hexspeak.
  • 4. About Me (1) Come from Taiwan (2) Contributor of Android Open Source Project (AOSP) (3) Developer, Linaro (4) Contributed to GNU Classpath / Kaffe, Linux internationalization (i18n), Openmoko
  • 5. Commercial Partners of 0xlab ARM / Linaro 0xlab contributes to Linaro Android since the first line of code AzureWave Build wireless networking & image processing solutions Mediatek Android based consumer products Open Embedded Software Foundation 0xlab contributes to the reference implementation Eventually, partners can benefit from open http://0xlab.org/partners.html source efforts and our experience.
  • 6. Agenda (1) Reasons to build Android distribution (2) Lesson learned from AOSP (3) The methods to enhace Android software stack (4) Go upstream
  • 7. Reasons to build Android Distribution based on non typical open source projects
  • 8. The reason why we built community Android Distribution: Initially, we just wanted to enable wireless connectivity features on Android per our hardware partnters requested. But, we never thought that it was difficult to do things efficiently.
  • 9. 0xdroid: enhanced Android distribution Beagleboard DevKit8000 Pandaboard We suffered from performance and usability issues in AOSP. 0xdroid is basically the environment where we can develop and experiment.
  • 10. What does 0xdroid deliver? • Hardware enablement: Beagleboard (TI OMAP3), Pandaboard (TI OMAP4), Snowball (ST-Ericsson Ux500) • Provide full source code for HAL • Usability: software cursor, window manager fix, large screen tweaks, network connectivity fix • Performance: ARM specific optimizations, graphics enhancement • Features: Bluetooth HID (keyboard/mouse), external modem, 3D effects, customized Launcher
  • 11. But, 0xlab is not really making yet another Android distribution. Our idea is to help community. 0xdroid is just a testbed (or reference implementation), and the valuable changes should be merged in upstream or other community projects.
  • 12. Strategy and Policy • open source efforts to improve AOSP • We focus on small-but-important area of Android. – toolchain, libc, dynamic linker, skia, software GL, system libraries, HAL, UX • Develop system utilities for Android – benchmark, black-box testing tool, validation infrastructure • Feature driven development – Faster boot/startup time, Bluetooth profile, visual enhancements • Submit and share changes to... – AOSP, CyanogenMod, Android-x86 – Linaro
  • 13. Working Model Rowboat CyanogenMod Android-x86
  • 14. Where does Linaro fit? Community (upstream) Aligned upstream investment Distributio ns take Linaro from Common upstream Linux Core Software Evaluation Builds OEM Linux Downstream
  • 15. Linaro Engineering Unit SoC support and SoC support and Optimization & Innovation Optimization & Innovation optimization optimization Platform Working Groups Engineering Kernel Consolidation Kernel Consolidation Validation & Benchmarking Toolchain Toolchain Evaluation Builds Android, Ubuntu, Graphics Graphics Chrome, IVI… Power Management Power Management Infrastructure Release management : Multimedia Multimedia Validation, benchmarking, Validation, benchmarking, release management release management
  • 16. Joint-Development Efforts (demo video) • Milestone 0x4 ● http://www.youtube.com/watch?v=OGpYk1p1UPI simplified deployment, theme-able Android launcher, Automated Testing Infrastructure (esuit + CTS), external modem support, 3D Eye-candy Effects, Performance Improvements for ARM • Milestone 0x7 ● http://www.youtube.com/watch?v=_3dT68MOzz0 Linaro powered infrastructure, further ARM optimizations, real fast boot-time solution for Android, validation framework
  • 18. Let's go Upstream! Unfortunately, contributing to AOSP is an __art__. You never know how Google thinks of your patches exactly, even through Gerrit (code review system).
  • 19. Problems We faced • AOSP looks like “An Open Source Protector" • No public roadmap – Therefore, we ignore the modifications against Android framework in public activities. • The merged changes usually show up in next 1 or 2 public release. – It is really hard to introduce/track the relevant changes. • Not clear discussions on android-contrib mailing- list. Sometimes, you have to have private communications to Google engineers. • Version control / Code Review on invisible repositories (internal and far-away GIT tree)
  • 20. Change represented in Gerrit gerrit upstream Change 123 Patchset 1 dev-b dev-a Commit cdeb34 Create Local % git checkout -b topic-branch Branch Patchset 2 Commit 41dbe5 work Google provides the great code Push % git push gerrit review tool for AOSP, but... to HEAD:refs/for/master Gerrit
  • 21. Flow of AOSP submitted changes Create Local Branch Fix work commit rejected rebased! Push to Review Upstream repo Gerrit approved/ submitted Here “upstream” means AOSP master and Google internal tree.
  • 22. No explicit change history No explicit change history Android style open source model Android style open source model Gap between Goolge internal GIT/Perforce and AOSP Git
  • 23. After Gingerbread, it gets much clear for toolchain part prebuilt/ prebuilt/ commit 81cce608ab19dcd0aaf7d08d57a4460229e43c45 commit 81cce608ab19dcd0aaf7d08d57a4460229e43c45 Author: Jing Yu <jingyu@google.com> Author: Jing Yu <jingyu@google.com> Date: Date: Tue Dec 14 10:55:23 2010 -0800 Tue Dec 14 10:55:23 2010 -0800 Patched toolchain to fix a few gcc and binutils bugs. Patched toolchain to fix a few gcc and binutils bugs. Sources to build this toolchain are listed on arm-eabi-4.4.3/SOURCES Sources to build this toolchain are listed on arm-eabi-4.4.3/SOURCES linux-x86/toolchain/arm-eabi-4.4.3/SOURCES linux-x86/toolchain/arm-eabi-4.4.3/SOURCES build/ synced to build/ synced to commit 4cc02faaa7e8828f9458b1828a6f85e7791ae2aa commit 4cc02faaa7e8828f9458b1828a6f85e7791ae2aa Author: Jim Huang <jserv@0xlab.org> Author: Jim Huang <jserv@0xlab.org> Date: Date: Fri Aug 20 23:30:37 2010 +0800 Fri Aug 20 23:30:37 2010 +0800 And rollback the following 3 patches. And rollback the following 3 patches. commit de263c26a7680529baca731c003bc58b68d72511 commit de263c26a7680529baca731c003bc58b68d72511 Author: Jing Yu <jingyu@google.com> Author: Jing Yu <jingyu@google.com> Date: Date: Thu Aug 12 15:52:15 2010 -0700 Thu Aug 12 15:52:15 2010 -0700 Although we can check git log, we Although git log, we still have no idea why they changed still have no idea why changed
  • 24. Observed AOSP Working Model • “master” branch in Android is the bridge between AOSP and Google internal tree. There are many contributions merged from companies, organizations, and individuals. But no efficient code review available for non-existing repositories. And, only few Google engineers do review changes. • Master branch = the latest AOSP + Partial changes by Google (bug-fixes from internal tree) – Not fully verified codebase. • The best hints are the opinions written by Google engineers inside Gerrit. – Send patches if possible
  • 25. My interpretation of Android: Hardware is Revolution; Sotware is basically Evolution; Android is Hardware-driven Software Revolution
  • 26. Functional View (Android 1.5) Applications Applications Gallery Phone Web Browser Google Maps ・・・・・ Android Framework Android Framework Activity Window Content Notification View System Manager Manager Manager Manager Package Telephony Resource Location Manager Manager Manager Manager System Library System Library Android Runtime Android Runtime SurfaceFlinger SurfaceFlinger OpenCORE OpenCORE SQLite Class Library Dalvik Virtual Machine Dalvik Virtual Machine OpenGL|ES OpenGL|ES AudioFlinger AudioFlinger WebKit SGL SGL OpenSSL bionic libc bionic libc Freetype Linux Kernel Linux Kernel
  • 27. Functional View (Android 2.3) Applications Applications Gallery Phone Web Browser Google Maps ・・・・・ Android Framework Android Framework Activity Window Content Notification View System Manager Manager Manager Manager Package Telephony Resource Location Manager Manager Manager Manager RenderScript OpenGL|ES 2.x accelerated. System Library System Library Android Runtime Android Runtime Drop 2D accel SurfaceFlinger SurfaceFlinger StageFright SQLite Class Library V8 bridge Dalvik Virtual Machine Dalvik Virtual Machine GLES 2.0 OpenGL|ES OpenGL|ES AudioFlinger AudioFlinger WebKit SMP improvements Skia Skia OpenSSL bionic libc bionic libc Freetype JIT compiler Skia supports GPU backend SMP fixes In Android ICS Linux Kernel Linux Kernel The overall design is consistent, but the current model The overall design is consistent, but the current model prevents from diverse community contributions. prevents from diverse community contributions.
  • 28. AOSP statistics for Gingerbread (Dec 2010) 4204 google.com 1354 android.com 17 openbossa.org 98 sonyericsson.com 11 nxp.com 71 gmail.com 11 linux.org.tw 39 codeaurora.org 10 ti.com 39 samsung.com 10 acer.com.tw 38 intel.com 8 themaw.net Because Android 32 nokia.com imported BlueZ 8 garmin.com 32 holtmann.org as Bluetooth stack 7 snpe.rs 29 0xlab.org 7 motorola.com 25 trusted-logic.com 7 mc.pp.se 7 googlemail.com The number are commits since Froyo release. However, the valuable changes from community such as CyanogenMod are usually absent due to long-time review process.
  • 29. Methods to Enhance Android Software Stack when building custom Android distribution and merging changes from community
  • 30. Mission in our development: Improve UX in SoC UX = User Experience SoC = Integrated Computing Anywhere
  • 31. Quality in custom Android Distribution • 0xlab delivers the advantages of open source software and development. – Quality relies on two factors: continuous development + strong user feedback • Several utilities are developed to ensure the quality and released as open source software. – 0xbench (Android benchmarking tool) – ASTER (Android System Testing Environment and Runtime) – LAVA (Linaro Automated Validation Architecture) • In the meanwhile, performance is improved by several patches against essential components.
  • 32. LAVA: Automated Validation Infrastructure for Android Android benchmark running on LAVA. Android support on LAVA Automated Validation flow includes https://wiki.linaro.org/Platform/Validation/LAVA from deploy, then reboot, testing, benchmark running, and result submit. Android related commands in LAVA: * deploy_linaro_android_image * boot_linaro_android_image * test_android_basic * test_android_monkey * test_android_0xbench * submit_results_on_host
  • 33. 0xbench: comprehensive open source benchmark suite for Android • A set of system utilities for Android to perform comprehensive system benchmarking • Dalvik VM performance • OpenGL|ES performance • Android Graphics framework performance • I/O performance • JavaScript engine performance • Connectivity performance • Micro-benchmark: stanard C library, system call, latency, Java invocation, ... http://code.google.com/p/0xbench/
  • 35. Collect and Analyze results on server-side
  • 36. Android Functional Testing (1) stress test (2) Automated test
  • 37. Stress Test • According to CDD (Compatilbility Definition Document), Device implementations MUST include the Monkey framework, and make it available for applications to use. • monkey is a command that can directly talks to Android framework and emulate random user input. adb shell monkey ­p your.package.name ­v 500 • Decide the percentage of touch events, keybord events, etc., then run automatically.
  • 38. ASTER: Automated Test • Blackbox-test vs. Whitebox-test • An easy to use automated testing tool with IDE – Built upon MoneyRunner • Batch execution of visual test scripts • Multiple chains of recall commands • Designed for non-programmer or Q&A engineers • Use OpenCV to recognize icons or UI hints http://code.google.com/p/aster/
  • 39.
  • 41. ASTER IDE in 2011
  • 42. Bring Enhancements back to Community
  • 43. What do we deliver to communty? • Patches merged in AOSP, CyanogenMod, and Android-x86 • Implement 100% open source OpenGL|ES adaptation based on Mesa/3D into Android – The world-first, important to Android-x86 • Performance: ARM specific optimizations, graphics enhancement • Features: Bluetooth HID (keyboard/mouse), external modem, 3D effects, customized Launcher
  • 44. Arithmetic on Nexus S Tune Dalvik VM performance (armv7)
  • 45. Apply extra performance tweaks against optimized build 2D on Nexus S (NEON)
  • 47. Benchmark: 3D (arm11-custom; no GPU) This explains that we have several system tools and development flow to help customers/community to verify the performance and improve.
  • 48. bionic libc • Android C/C++ library • 0xlab’s Optimizations (merged in AOSP) – Memory operations: Use ARMv6 unaligned access to optimize usual cases – reused by Dalvik to accelerate primitive byte order – Endian/Data Type conversion: Use ARMv6 fast endian primitives. Useful for TCP/IP (big endian / little endian converting) – Various ARM optimized string operations • memcpy, strcmp, strcpy, memset
  • 50. Why and How? • The major reason to optimize dynamic linker is to speed up application startup time. • Approaches: ● Implement GNU style hash support for bionic linker ● Prelinker improvements: incremental global prelinking – reduce the number of ELF symbol lookup aggressively • Changed parts – apriori, soslim, linker, elfcopy, elfutils
  • 51. (normalized) Dynamic Link time 1 0.9 0.8 0.7 0.6 lp 0.5 gp 0.4 re.gp 0.3 re.pe.gp 0.2 re.pe.pgp.gp re.pe.pgp.gp.are 0.1 0 ation ess ver rild lld on ggerd r ore nage insta -daem iaser proc keyst anim debu cema app_ med dbus boot servi
  • 52. (normalized) Symbol Lookup number 1 0.8 0.6 elf.lp elf.gp 0.4 elf.re.gp elf.re.pe.gp 0.2 elf.re.pe.pgp.gp elf.re.pe.pgp.gp.are 0 on ess ggerd rild lld ation ore ver r nage insta -daem iaser proc keyst anim -0.2 debu cema app_ med dbus boot servi
  • 53. DT_GNU_HASH: visible dynamic linking improvement = Better hash function (few collisions) + Drop unnecessary entry from hash + Bloom filter void foo (){ libc.so printf(“fooooo”); printf bar(); } libfoo.so foo bar libfoo.so DT_GNU_HASH DT_HASH foo foo bar bar printf
  • 54. Symbols lookup# fail# gnu hash filtered by bloom in ELF gnu.gp 3758 23702 19950 23310 18234(78%) gnu.gp.re 3758 20544 16792 19604 14752(75%) gnu.lp 61750 460996 399252 450074 345032(76%) gnu.lp.re 61750 481626 419882 448492 342378(76%) H = {x, y, z} = hash functions Hash function may collision → Bloom filter may got false positives Bit array NOTE: Android 4.0 removes the support of prelinker, but gnu style hash is still useful.
  • 55. Bluetooth HID (keyboard/mouse) CyanogenMod merged the feature since version 6.x. (2010q2) Android 4.0 finally provides its own implementation though. (2011q4)
  • 56. UI customizations • Provide several UI/Launcher combination for small and large screen devices. • Sizing from HVGA, VGA, SVGA (Phone), to 720p/1080p (TV) • Either modified Android Launcher or new replacement • Licensed under Apache Software License
  • 57. Products with Advanced 3D UI • 3D effects and the ARM optimizations are enabled in Qualcomm platforms w/ and w/o GPU accelerations • Demo video: http://www.youtube.com/watch?v=kNyVXIEG3gg
  • 58. Android Boot Time Optimizations
  • 59. Write Tiny Boot loader to Speed up Qi Boot-loader Qi Boot-oader U-Boot + XLoader Size ~30K ~270K+20K  Only one stage boot- Time to Kernel <1s > 5s loader Usage Product Engineering  Small footprint ~30K Code Simple Complicated  Currently support − iMX31 − Samsung 24xx − Beagleboard  KISS concept − Boot device and load kernel
  • 60. Optimized ARM Hibernation • Based on existing technologies thus requires little modification to userspace – TuxOnIce • Release clean-pages before suspend • Swap out dirty-pages before save image • Image size reduced leads to faster resume time. Demo video: http://www.youtube.com/watch?v=pvcQiiikJDU
  • 61. Further Boot Time Optimizations • Based on existing technologies thus requires little • Save the heap image (like core dump) of Zygote after preloading classes • Modify Dalvik to make hibernation image after system init and before Launcher startup • Parallize Android init • Cache & share JIT'ed code fragment
  • 62. Go Upstream! Patches are dead, long live the Android Let's think about the collaboration with AOSP,
  • 63. The practice way for upstreaming • “Buffer” is required. – CyanogenMod – Linaro • You have to jump over the gap (software revolution by Google). • CyanogenMod is proven as the great example to work with AOSP in some way. – Large and active user base – Developers can submit verified patches to AOSP for reviewing • Acceptable fields – System libraries – Application / framework bugs
  • 64. Working with Linaro • Linaro kernel becomes members most advanced • Vendor BSP and Linaro landing team engineers work together • Get latest software on latest SoCs with upstream support "merge window" role
  • 65. Conclusion • Android is indeed a platform with source code available instead of a typical open source project. • Collaboration is important especially to Android variants. You have to solve problems with the help from community members. • Leverage the power of community to make your software validated well. • Before tracking large scale of Android source code, it would be better to utilize the tools. • Be open minded
  • 66. Resources 聯繫 0xlab/0xdroid 開發團隊 0xdroid Roadmap: http://code.google.com/p/0xdroid/wiki/Roadmap Source repository: http://gitorious.org/+0xlab Wiki: http://code.google.com/p/0xdroid/w/list Demo videos: http://www.youtube.com/0xlab Mailing-list: General discussion: http://groups.google.com/group/0xlab-discuss Technical / Development: http://groups.google.com/group/0xlab-devel IRC channel (FreeNode): #0xlab