SlideShare a Scribd company logo
1 of 66
Download to read offline
Android Porting

   by Jollen Chen
       email: jollen@jollen.org           Text

                                                 Text




         blog: jollen.org/blog
  plurk: www.plurk.com/jollenchen


        	
    	
  	
    	
    	
    	
                  	
    	
 




                                                                    www.jollen.tw
www.jolle.tw




• Section 1.          Android Kernel
Android Porting


Android porting,   Android   hardware




 ‣     product

 ‣
 ‣
Android Porting


Application (API)

Product

Framework / Library

Android kernel
Android Porting:

        new product          Android

    ‣cupcake                armv4/armv5/x86

   API Level

    ‣      Android

   Vanilla Kernel Configs

    ‣Android framework
   Non-Vanilla Kernel

    ‣Merge Android framework
Android Porting:


‣     Android framework   library

    Android framework

‣ASHMEM wakelock
    shared library

‣     Android framework



‣case study: FreeRunner
API Level
System Image          API Level            Release
Android 1.5           3                    2009.4.27
Android 1.1           2                    2009.2.10
Android 1.0           1                    2008.9.23




    2007.11.5: Android

    2007.11.12: Adnroid SDK       early look version

    2008.1.3: Adnroid Developer Challenge

    2008.2.13: Android SDK m5-rc15

    2008.5.12: Top 50 Android Application
Devices
                     misc...




           Netbook
             x86


 Phone
ARMv4/v5
Cupcake
MMS

WebView             Touch events

WebView        SquirrelFish (JavaScript engine)

       IME

Basic x86 support

SIM Application Toolkit 1.0

...
android-porting
Android Source Code



     android.git.kernel.org
        1. Cupcake         x86 ports

        2. ./.repo/manifest.xml
      eee_701 platform        x86 ports
Android / armv4


       git.koolu.org
             armv4             Koolu

           s3c2410 / s3c244x

             Neo FreeRunner
Android / armv4

$ mkdir koolu-android
$ cd koolu-android
$ repo init -u git://git.koolu.org/freerunner/platform/manifest.git -b koolu-1.0
$ repo sync
Application Developers

         Applications                 change

 Application Framework


 Surface Manager      Dalvik VM
                                      System
Media Framework    Shared Libraries
                                      Image



         Linux Kernel
Product Branch Maintainer

          Applications

  Application Framework


  Surface Manager      Dalvik VM
                                       rebuild

  Media Framework   Shared Libraries




          Linux Kernel
Hardware Developing

        Applications

Application Framework


Surface Manager      Dalvik VM
                                     change

Media Framework   Shared Libraries




        Linux Kernel                 change
Architecture Porting

        Applications

Application Framework


Surface Manager      Dalvik VM


                                     porting
Media Framework   Shared Libraries




        Linux Kernel
Android Toolchain


android-toolchain-20081019

 ‣http://android.git.kernel.org/pub/
gcc 4.2.1 / binutils 2.17 / gdb 6.6

ARMV5te+

ABI: EABI, AAPCS

--with-float=soft --with=fpu-vfp

--enable-threads (single)
Android Kernel

Binder

Ashmem (Android shared memory)

PMEM (Processor memory allocator)

logcat (Android Logger)

wakelock (Android Power Management)

Alarm
Key Features            2.6.23   2.6.25   2.6.27   2.6.29

1   Alarm Driver                   O        O        O        O

2   Android Logger                 O        O        O        O

3   Low Memory Killer              O        O        O        O

4   Power Management               O        O        O        O

5   USB Gadget                     O        O        O        O

6   ASHMEM                         X        O        O        O

7   PMEM                           X        X        O        O

8   x86 Support                    X        X        O        O

9   ./drivers/staging/Android/     X        X        X        O
binder

Android    IPC

/proc/binder

‣state
‣stats
‣transactions
‣transation_log
‣failed_transation_log
Ashmem




kernel/mm/ashmem.c

/dev/ashmem
PMEM




drivers/misc/pmem.c

                  userspace driver
$ arm-eabi-gcc -o hello hello.c -Wl,-rpath-link=./cupcake/out/
target/product/generic/obj/lib -L./cupcake/out/target/product/
generic/obj/lib -nostdlib ./cupcake/out/target/product/generic/
obj/lib/crtbegin_dynamic.o -lc




        Android OS    native program
Android

    Android source code (Cupcake)

Toolchain

    EeePC
Linux

native C programs




glibc & shared libs




               S!"#$%!&'((




      Kernel




    Hardware
Android
Android Framework




         Application




                       JNI



                                S!"#$%!&'((
bionic & shared libs




                                              Kernel




                                         Hardware
Android
   Activity
onCreate()



 myActivity
              MediaPlayer
onCreate()




                         JNI



              OpenCore




                bionic




                         S!"#$%!&'((
www.jolle.tw




• Section 2. Build Android
Android

Build system (toolchain).

Dalvik::JNI

Dalvik::Interpreter

Bionic

System call
<android>/build/core/combo                Makefile
                      darwin-x86.mk
                                          macros
                         javac.mk


                       linux-arm.mk


                       linux-x86.mk


                         select.mk


                    target_linux-x86.mk


                     windows-x86.mk
GLOBAL CFLAGS

$(combo_target)GLOBAL_CFLAGS += 
            -march=armv5te -mtune=xscale 
            -msoft-float -fpic 
            -mthumb-interwork 
            -ffunction-sections 
            -funwind-tables 
            -fstack-protector 
            -fno-short-enums 
            -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ 
            -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ 
            -include $(call select-android-config-h,linux-arm)
GLOBAL CFLAGS for ARMv4

$(combo_target)GLOBAL_CFLAGS += 
            -march=armv4t -mcpu=arm920t -mtune=xscale 
            -msoft-float -fpic 
            -mthumb-interwork 
            -ffunction-sections 
            -funwind-tables 
            -fstack-protector 
            -fno-short-enums 
            -D__ARM_ARCH_4__ -D__ARM_ARCH_4T__ 
            -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ 
            -include $(call select-android-config-h,linux-arm)
<android>/dalvik/vm/arch                           JNI Porting
                           generic/



                            arm/



                                      CallEABI.S



                                   CallOldABI.S



                             x86



                                   Call386ABI.S
ARM EABI


r0-r3 hold first 4 args to a method
r9 is given special treatment in some situations, but not for us
r10 (sl) seems to be generally available
r11 (fp) is used by gcc (unless -fomit-frame-pointer is set)
r12 (ip) is scratch -- not preserved across method calls
r13 (sp) should be managed carefully in case a signal arrives
r14 (lr) must be preserved
r15 (pc) can be tinkered with directly
JNI Entry


r0 JNIEnv (can be left alone)
r1 clazz (NULL for virtual method calls, non-NULL for static)
r2 arg info *
r3 argc (number of 32-bit values in argv)
[sp] argv
[sp,#4] short signature
[sp,#8] func
[sp,#12] pReturn
Assembly Code #1: armv4/armv5


.Lcopy_done:
   @ call the method
   ldr ip, [r4, #8]      @ func
#ifndef __ARM_ARCH_4__
   blx ip
#else
   mov lr, pc
   bx    ip
#endif
Assembly Code #2: armv4/armv5


#ifndef __ARM_ARCH_4__
  ldmdb r4, {r4, r5, r6, r7, r8, r9, sp, pc}
#else
  ldmdb r4, {r4, r5, r6, r7, r8, r9, sp, lr}
  bx    lr
#endif
Dalvik
                                     Interpreter
<android>/dalvik/vm/mterp




                        common/



                            armv4/



                        armv5te/



                             x86/
Bionic


  Small and custom C library for the Android platform.

  A mainly port of BSD C library.

   Its own small implementation of pthreads based on Linux
futexes.

  Support for x86, ARM and ARM thumb.
<android>/bionic                   Bionic

                       libc/



                       libdl/



                      libm/



                    libstdc++/



                   libthread_db/



                      linker/
Bionic::libc
<android>/bionic/libc




                        arch-arm/



                        arch-x86/



                         kernel/



                              arch-arm/asm/



                              arch-x86/asm/
Android Generated Kernel Header

bionic/libc/kernel/        kernel header files

Android    kernel header            Linux kernel header




  userspace
External Library
  Android                library shared library

         library

         opencore


 ~/google-android/external/opencore$ find ./ -name "*.s" -print
./codecs_v2/audio/mp3/dec/src/asm/pvmp3_polyphase_filter_window_gcc.s
./codecs_v2/audio/mp3/dec/src/asm/pvmp3_mdct_18.s
./codecs_v2/audio/mp3/dec/src/asm/pvmp3_dct_9.s
./codecs_v2/audio/mp3/dec/src/asm/pvmp3_dct_9_gcc.s
./codecs_v2/audio/mp3/dec/src/asm/pvmp3_mdct_18_gcc.s
./codecs_v2/audio/mp3/dec/src/asm/pvmp3_polyphase_filter_window.s
 ./codecs_v2/audio/mp3/dec/src/asm/pvmp3_dct_16_gcc.s
sonivox & OpenSSL

 ./sonivox/arm-hybrid-22k/lib_src/ARM-E_filter_gnu.s
./sonivox/arm-hybrid-22k/lib_src/ARM-E_mastergain_gnu.s
./sonivox/arm-hybrid-22k/lib_src/ARM-E_voice_gain_gnu.s
./sonivox/arm-hybrid-22k/lib_src/ARM-E_interpolate_noloop_gnu.s
./sonivox/arm-hybrid-22k/lib_src/ARM-E_interpolate_loop_gnu.s
./sonivox/arm-wt-22k/lib_src/ARM-E_filter_gnu.s
./sonivox/arm-wt-22k/lib_src/ARM-E_mastergain_gnu.s
./sonivox/arm-wt-22k/lib_src/ARM-E_voice_gain_gnu.s
./sonivox/arm-wt-22k/lib_src/ARM-E_interpolate_loop_gnu.s
./openssl/crypto/bn/asm/pa-risc2W.s
./openssl/crypto/bn/asm/pa-risc2.s
./openssl/crypto/bn/asm/mips3.s
./openssl/crypto/0.9.9-dev/aes/aes-armv4.s
./openssl/crypto/0.9.9-dev/bn/armv4-mont.s
./openssl/crypto/0.9.9-dev/sha/sha256-armv4.s
./openssl/crypto/0.9.9-dev/sha/sha512-armv4.s
 ./openssl/crypto/0.9.9-dev/sha/sha1-armv4-large.s
Android & Kernel

SurfaceHolder     type   SURFACE_TYPE_GPU      GPU
Graphics Processing Unit

SurfaceHolder   type   SURFACE_TYPE_HARDWARE
DMA




   userspace
Android

Surface Manager     Media Framework

SurfaceHolder     type   SURFACE_TYPE_GPU        GPU
Graphics Processing Unit

SurfaceHolder     type   SURFACE_TYPE_HARDWARE
DMA

MediaPlayer       OpenCore
Surface Manager

private SurfaceView mPreview;
private SurfaceHolder holder;

public void onCreate(Bundle icicle) {
  super.onCreate(icicle);
  setContentView(R.layout.mediaplayer_2);
  mPreview = (SurfaceView) findViewById(R.id.surface);
  holder = mPreview.getHolder();
  holder.addCallback(this);
  holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}




 Surface Manager
Media Framework

    private MediaPlayer mMediaPlayer;

    public void surfaceCreated(SurfaceHolder holder) {
        mMediaPlayer = new MediaPlayer();
        mMediaPlayer.setDataSource(path);
        mMediaPlayer.setDisplay(holder);
        mMediaPlayer.prepare();
        mMediaPlayer.setOnBufferingUpdateListener(this);
        mMediaPlayer.setOnCompletionListener(this);
        mMediaPlayer.setOnPreparedListener(this);
        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}




     Media Framework               OpenCore
New Product File Tree

<company_name>
    <board_name>
       + Android.mk
       + product_config.mk
       + system.prop
    products
       + AndroidProducts.mk
       + <first_product_name>.mk
       + <second_product_name>.mk
Android x86 port (target product = EeePC 701)
 1. Get Google Android
 $ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
 $ repo sync

 2. Manifest file.
 <manifest>
 ...
 <project name="platform/vendor/asus/eee_701"  path="vendor/asus/eee_701"/>
 ...
 </manifest>

 3. Get EeePC platform.
 $ repo sync

 4. Build Android image.
 $ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701
 DISABLE_DEXPREOPT=true make -j2 installer_img

 5. Create USB boot stick.
 Use make-live script. https://review.source.android.com/Gerrit#change,6475
Build EeePC 701 Product Tips # Google API issue

 $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)

 PRODUCT_NAME := eee_701
 PRODUCT_DEVICE := eee_701
 PRODUCT_POLICY := android.policy_mid
 PRODUCT_PROPERTY_OVERRIDES += 
    ro.com.android.dataroaming=true



    Cupcake      Google APIs         add-ons
Build EeePC 701 Product Tips # e2fsprogs issue

 external/e2fsprogs/Android.mk:
 --- a/Android.mk
 +++ b/Android.mk
 @@ -1,3 +1,3 @@
 ifneq ($(TARGET_SIMULATOR),true)
 -# include $(call all-subdir-makefiles)
 + include $(call all-subdir-makefiles)
 endif
Android Image Files

boot.img

installer.img

ramdisk.img

system.img

userdata.img
Android

$ make-live
VirtualBox


AMD PCnet32 PCI support

VESA VGA graphics support

VGA 8x8 font

VGA 8x16 font
installer.img                  VDI

$ VBoxManage convertromraw -format VDI ./installer.img ./android.vdi
Android Kernerl Configs
Android Init Process

device/system/init

device/system/init/init.c

/etc/init.rc

     mount file system (    /etc/fstab)
Running Applications

/system/bin/logd
/sbin/adbd
/system/bin/usbd
/system/bin/debuggerd
/system/bin/rild
/system/bin/app_process
/system/bin/runtime
/system/bin/dbus-daemon
system_server
Zygote Process Startup
Android FreeRunner


         s3c2410 / s3c244x

           Neo FreeRunner

             Mokofly (coming...)
android-way.com
        www.jollen.tw

FAQ            Jollen Chen <jollen@jollen.org>
                            Text

                                   Text




           Embedded Linux                             Embedded Linux   Linux
                                                     Openmoko
                                          Openmoko
                                                     Android OS
               Android

      Jollen             - www.jollen.org/blog

      Jollen         - www.plurk.com/jollenchen

More Related Content

What's hot

U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0GlobalLogic Ukraine
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverNanik Tolaram
 
Android Binder IPC for Linux
Android Binder IPC for LinuxAndroid Binder IPC for Linux
Android Binder IPC for LinuxYu-Hsin Hung
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux DevelopersOpersys inc.
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System ServerOpersys inc.
 
Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Opersys inc.
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsLinaro
 
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
 
Project meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture OverviewProject meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture OverviewYu-Hsin Hung
 

What's hot (20)

U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
 
Android Virtualization: Opportunity and Organization
Android Virtualization: Opportunity and OrganizationAndroid Virtualization: Opportunity and Organization
Android Virtualization: Opportunity and Organization
 
Binder: Android IPC
Binder: Android IPCBinder: Android IPC
Binder: Android IPC
 
Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)
 
Design and Concepts of Android Graphics
Design and Concepts of Android GraphicsDesign and Concepts of Android Graphics
Design and Concepts of Android Graphics
 
Android Binder IPC for Linux
Android Binder IPC for LinuxAndroid Binder IPC for Linux
Android Binder IPC for Linux
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
 
Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?Android Treble: Blessing or Trouble?
Android Treble: Blessing or Trouble?
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
 
Understanding open max il
Understanding open max ilUnderstanding open max il
Understanding open max il
 
Hacking Android OS
Hacking Android OSHacking Android OS
Hacking Android OS
 
Low Level View of Android System Architecture
Low Level View of Android System ArchitectureLow Level View of Android System Architecture
Low Level View of Android System Architecture
 
Android Audio System
Android Audio SystemAndroid Audio System
Android Audio System
 
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IVEmbedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
 
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
 
Project meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture OverviewProject meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture Overview
 

Viewers also liked

Procedure to start small scale industries
Procedure to start small scale industriesProcedure to start small scale industries
Procedure to start small scale industrieszeeshanabdullateef
 
dental history taking
dental history takingdental history taking
dental history takingshabeel pn
 
SharePoint Intranet Trends & Best Practices: 2010 and beyond
SharePoint Intranet Trends & Best Practices: 2010 and beyond SharePoint Intranet Trends & Best Practices: 2010 and beyond
SharePoint Intranet Trends & Best Practices: 2010 and beyond Optimus BT
 
Brand As Verb: Principles of High Performing Experience Brands
Brand As Verb: Principles of High Performing Experience BrandsBrand As Verb: Principles of High Performing Experience Brands
Brand As Verb: Principles of High Performing Experience BrandsBen Grossman
 
New forever clean 9 booklet
New forever clean 9 bookletNew forever clean 9 booklet
New forever clean 9 bookletKatalin Hidvegi
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011pundiramit
 
Use of Probiotics in the NICU
Use of Probiotics in the NICUUse of Probiotics in the NICU
Use of Probiotics in the NICUProlacta
 
Fivelac probiotic
Fivelac probioticFivelac probiotic
Fivelac probioticRaga C
 
PTG-E Congress 2008 Microbe Hunters GI Lecture
PTG-E Congress 2008 Microbe Hunters GI LecturePTG-E Congress 2008 Microbe Hunters GI Lecture
PTG-E Congress 2008 Microbe Hunters GI Lecturemarlicz
 
What is Biogaia Probiotic
What is Biogaia ProbioticWhat is Biogaia Probiotic
What is Biogaia ProbioticRaga C
 
Pre and Probiotics Final Spring 2016
Pre and Probiotics Final Spring 2016Pre and Probiotics Final Spring 2016
Pre and Probiotics Final Spring 2016Sofia Zois
 
Scientific Validation Of Polydextrose As A Fibre And
Scientific Validation Of Polydextrose As A Fibre AndScientific Validation Of Polydextrose As A Fibre And
Scientific Validation Of Polydextrose As A Fibre AndGeoffreyOsullivan
 
A review on the Role of Beneficial microorganisms and Prebiotics in Human Nut...
A review on the Role of Beneficial microorganisms and Prebiotics in Human Nut...A review on the Role of Beneficial microorganisms and Prebiotics in Human Nut...
A review on the Role of Beneficial microorganisms and Prebiotics in Human Nut...DVS BioLife Ltd
 

Viewers also liked (20)

Procedure to start small scale industries
Procedure to start small scale industriesProcedure to start small scale industries
Procedure to start small scale industries
 
dental history taking
dental history takingdental history taking
dental history taking
 
ZFSperftools2012
ZFSperftools2012ZFSperftools2012
ZFSperftools2012
 
SharePoint Intranet Trends & Best Practices: 2010 and beyond
SharePoint Intranet Trends & Best Practices: 2010 and beyond SharePoint Intranet Trends & Best Practices: 2010 and beyond
SharePoint Intranet Trends & Best Practices: 2010 and beyond
 
Sony corporation
Sony corporationSony corporation
Sony corporation
 
Final Ppt Of Inflation
Final Ppt Of InflationFinal Ppt Of Inflation
Final Ppt Of Inflation
 
Brain Anatomy
Brain AnatomyBrain Anatomy
Brain Anatomy
 
Brand As Verb: Principles of High Performing Experience Brands
Brand As Verb: Principles of High Performing Experience BrandsBrand As Verb: Principles of High Performing Experience Brands
Brand As Verb: Principles of High Performing Experience Brands
 
Steam Turbines Basics
Steam Turbines BasicsSteam Turbines Basics
Steam Turbines Basics
 
Engineering Geology
Engineering GeologyEngineering Geology
Engineering Geology
 
New forever clean 9 booklet
New forever clean 9 bookletNew forever clean 9 booklet
New forever clean 9 booklet
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011
 
Use of Probiotics in the NICU
Use of Probiotics in the NICUUse of Probiotics in the NICU
Use of Probiotics in the NICU
 
Fivelac probiotic
Fivelac probioticFivelac probiotic
Fivelac probiotic
 
PTG-E Congress 2008 Microbe Hunters GI Lecture
PTG-E Congress 2008 Microbe Hunters GI LecturePTG-E Congress 2008 Microbe Hunters GI Lecture
PTG-E Congress 2008 Microbe Hunters GI Lecture
 
What is Biogaia Probiotic
What is Biogaia ProbioticWhat is Biogaia Probiotic
What is Biogaia Probiotic
 
Pre and Probiotics Final Spring 2016
Pre and Probiotics Final Spring 2016Pre and Probiotics Final Spring 2016
Pre and Probiotics Final Spring 2016
 
Scientific Validation Of Polydextrose As A Fibre And
Scientific Validation Of Polydextrose As A Fibre AndScientific Validation Of Polydextrose As A Fibre And
Scientific Validation Of Polydextrose As A Fibre And
 
Issue management
Issue managementIssue management
Issue management
 
A review on the Role of Beneficial microorganisms and Prebiotics in Human Nut...
A review on the Role of Beneficial microorganisms and Prebiotics in Human Nut...A review on the Role of Beneficial microorganisms and Prebiotics in Human Nut...
A review on the Role of Beneficial microorganisms and Prebiotics in Human Nut...
 

Similar to Android OS Porting: Introduction

0xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp020xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp02chon2010
 
Android on IA devices and Intel Tools
Android on IA devices and Intel ToolsAndroid on IA devices and Intel Tools
Android on IA devices and Intel ToolsXavier Hallade
 
Cross-compilation native sous android
Cross-compilation native sous androidCross-compilation native sous android
Cross-compilation native sous androidThierry Gayet
 
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
 
Portinig Application, Drivers And Os
Portinig Application, Drivers And OsPortinig Application, Drivers And Os
Portinig Application, Drivers And Osmomobangalore
 
Running native code on Android #OSDCfr 2012
Running native code on Android #OSDCfr 2012Running native code on Android #OSDCfr 2012
Running native code on Android #OSDCfr 2012Cédric Deltheil
 
lecture-2-android-dev.pdf
lecture-2-android-dev.pdflecture-2-android-dev.pdf
lecture-2-android-dev.pdfjakjak36
 
Droidcon uk2012 androvm
Droidcon uk2012 androvmDroidcon uk2012 androvm
Droidcon uk2012 androvmdfages
 
Porting Android ABS 2011
Porting Android ABS 2011Porting Android ABS 2011
Porting Android ABS 2011Opersys inc.
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Androidnatdefreitas
 
Advance Android Application Development
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application DevelopmentRamesh Prasad
 
Android Native Development Kit
Android Native Development KitAndroid Native Development Kit
Android Native Development KitPeter R. Egli
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalNAVER D2
 
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.
 

Similar to Android OS Porting: Introduction (20)

Building
BuildingBuilding
Building
 
0xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp020xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp02
 
Android on IA devices and Intel Tools
Android on IA devices and Intel ToolsAndroid on IA devices and Intel Tools
Android on IA devices and Intel Tools
 
Core Android
Core AndroidCore Android
Core Android
 
Cross-compilation native sous android
Cross-compilation native sous androidCross-compilation native sous android
Cross-compilation native sous android
 
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
 
Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone Discover System Facilities inside Your Android Phone
Discover System Facilities inside Your Android Phone
 
Portinig Application, Drivers And Os
Portinig Application, Drivers And OsPortinig Application, Drivers And Os
Portinig Application, Drivers And Os
 
Running native code on Android #OSDCfr 2012
Running native code on Android #OSDCfr 2012Running native code on Android #OSDCfr 2012
Running native code on Android #OSDCfr 2012
 
lecture-2-android-dev.pdf
lecture-2-android-dev.pdflecture-2-android-dev.pdf
lecture-2-android-dev.pdf
 
Droidcon uk2012 androvm
Droidcon uk2012 androvmDroidcon uk2012 androvm
Droidcon uk2012 androvm
 
There is more to C
There is more to CThere is more to C
There is more to C
 
Porting Android
Porting AndroidPorting Android
Porting Android
 
Porting Android ABS 2011
Porting Android ABS 2011Porting Android ABS 2011
Porting Android ABS 2011
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
 
Advance Android Application Development
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application Development
 
Android basics
Android basicsAndroid basics
Android basics
 
Android Native Development Kit
Android Native Development KitAndroid Native Development Kit
Android Native Development Kit
 
Kandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_finalKandroid for nhn_deview_20131013_v5_final
Kandroid for nhn_deview_20131013_v5_final
 
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
 

More from Jollen Chen

Flowchain blockchain classroom at Taiwan Tech University
Flowchain blockchain classroom at Taiwan Tech UniversityFlowchain blockchain classroom at Taiwan Tech University
Flowchain blockchain classroom at Taiwan Tech UniversityJollen Chen
 
Bitmark and Hyperledger Workshop: the Digital Assets and Property
Bitmark and Hyperledger Workshop: the Digital Assets and PropertyBitmark and Hyperledger Workshop: the Digital Assets and Property
Bitmark and Hyperledger Workshop: the Digital Assets and PropertyJollen Chen
 
Introducing the Blockchain and Distributed Ledger Technology
Introducing the Blockchain and  Distributed Ledger TechnologyIntroducing the Blockchain and  Distributed Ledger Technology
Introducing the Blockchain and Distributed Ledger TechnologyJollen Chen
 
Maker of Things - the open IoT cloud for makers chapter.
Maker of Things - the open IoT cloud for makers chapter.Maker of Things - the open IoT cloud for makers chapter.
Maker of Things - the open IoT cloud for makers chapter.Jollen Chen
 
WoT.City and IoT Protocols Movement @ Taipei, Taiwan
WoT.City and IoT Protocols Movement @ Taipei, TaiwanWoT.City and IoT Protocols Movement @ Taipei, Taiwan
WoT.City and IoT Protocols Movement @ Taipei, TaiwanJollen Chen
 
IoT and Maker Crossover (IMCO) Conference 2015
IoT and Maker Crossover (IMCO) Conference 2015IoT and Maker Crossover (IMCO) Conference 2015
IoT and Maker Crossover (IMCO) Conference 2015Jollen Chen
 
Open IoT Cloud Architecture, Web of Things, Shenzhen, China.
Open IoT Cloud Architecture, Web of Things, Shenzhen, China.Open IoT Cloud Architecture, Web of Things, Shenzhen, China.
Open IoT Cloud Architecture, Web of Things, Shenzhen, China.Jollen Chen
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101Jollen Chen
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Jollen Chen
 
MongoDB & NoSQL 101
 MongoDB & NoSQL 101 MongoDB & NoSQL 101
MongoDB & NoSQL 101Jollen Chen
 
Mokoversity Course: Apple Swift 101 - Introduction
Mokoversity Course: Apple Swift 101 - IntroductionMokoversity Course: Apple Swift 101 - Introduction
Mokoversity Course: Apple Swift 101 - IntroductionJollen Chen
 
Android Wear SDK: Level 101
Android Wear SDK: Level 101Android Wear SDK: Level 101
Android Wear SDK: Level 101Jollen Chen
 
Startup eng-camp 3
Startup eng-camp 3Startup eng-camp 3
Startup eng-camp 3Jollen Chen
 
讓 HTML5 走進 IPTV Framework
讓 HTML5 走進 IPTV Framework讓 HTML5 走進 IPTV Framework
讓 HTML5 走進 IPTV FrameworkJollen Chen
 
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(2)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(2)課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(2)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(2)Jollen Chen
 
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(3)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(3)課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(3)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(3)Jollen Chen
 
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(1)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(1)課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(1)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(1)Jollen Chen
 
Android HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacyAndroid HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacyJollen Chen
 
Jollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-levelJollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-levelJollen Chen
 
Embedded Linux: Introduction
Embedded Linux: IntroductionEmbedded Linux: Introduction
Embedded Linux: IntroductionJollen Chen
 

More from Jollen Chen (20)

Flowchain blockchain classroom at Taiwan Tech University
Flowchain blockchain classroom at Taiwan Tech UniversityFlowchain blockchain classroom at Taiwan Tech University
Flowchain blockchain classroom at Taiwan Tech University
 
Bitmark and Hyperledger Workshop: the Digital Assets and Property
Bitmark and Hyperledger Workshop: the Digital Assets and PropertyBitmark and Hyperledger Workshop: the Digital Assets and Property
Bitmark and Hyperledger Workshop: the Digital Assets and Property
 
Introducing the Blockchain and Distributed Ledger Technology
Introducing the Blockchain and  Distributed Ledger TechnologyIntroducing the Blockchain and  Distributed Ledger Technology
Introducing the Blockchain and Distributed Ledger Technology
 
Maker of Things - the open IoT cloud for makers chapter.
Maker of Things - the open IoT cloud for makers chapter.Maker of Things - the open IoT cloud for makers chapter.
Maker of Things - the open IoT cloud for makers chapter.
 
WoT.City and IoT Protocols Movement @ Taipei, Taiwan
WoT.City and IoT Protocols Movement @ Taipei, TaiwanWoT.City and IoT Protocols Movement @ Taipei, Taiwan
WoT.City and IoT Protocols Movement @ Taipei, Taiwan
 
IoT and Maker Crossover (IMCO) Conference 2015
IoT and Maker Crossover (IMCO) Conference 2015IoT and Maker Crossover (IMCO) Conference 2015
IoT and Maker Crossover (IMCO) Conference 2015
 
Open IoT Cloud Architecture, Web of Things, Shenzhen, China.
Open IoT Cloud Architecture, Web of Things, Shenzhen, China.Open IoT Cloud Architecture, Web of Things, Shenzhen, China.
Open IoT Cloud Architecture, Web of Things, Shenzhen, China.
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101
 
MongoDB & NoSQL 101
 MongoDB & NoSQL 101 MongoDB & NoSQL 101
MongoDB & NoSQL 101
 
Mokoversity Course: Apple Swift 101 - Introduction
Mokoversity Course: Apple Swift 101 - IntroductionMokoversity Course: Apple Swift 101 - Introduction
Mokoversity Course: Apple Swift 101 - Introduction
 
Android Wear SDK: Level 101
Android Wear SDK: Level 101Android Wear SDK: Level 101
Android Wear SDK: Level 101
 
Startup eng-camp 3
Startup eng-camp 3Startup eng-camp 3
Startup eng-camp 3
 
讓 HTML5 走進 IPTV Framework
讓 HTML5 走進 IPTV Framework讓 HTML5 走進 IPTV Framework
讓 HTML5 走進 IPTV Framework
 
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(2)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(2)課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(2)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(2)
 
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(3)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(3)課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(3)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(3)
 
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(1)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(1)課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(1)
課程名稱:八屏一雲時代來臨 教你HTML5六小時打通(1)
 
Android HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacyAndroid HAL Introduction: libhardware and its legacy
Android HAL Introduction: libhardware and its legacy
 
Jollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-levelJollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-level
 
Embedded Linux: Introduction
Embedded Linux: IntroductionEmbedded Linux: Introduction
Embedded Linux: Introduction
 

Recently uploaded

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
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
 
"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
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
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
 
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
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
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
 
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
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
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
 
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
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
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
 
"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
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
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
 
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
 
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
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
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
 
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
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
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
 
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
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 

Android OS Porting: Introduction

  • 1. Android Porting by Jollen Chen email: jollen@jollen.org Text Text blog: jollen.org/blog plurk: www.plurk.com/jollenchen www.jollen.tw
  • 3. Android Porting Android porting, Android hardware ‣ product ‣ ‣
  • 5. Android Porting: new product Android ‣cupcake armv4/armv5/x86 API Level ‣ Android Vanilla Kernel Configs ‣Android framework Non-Vanilla Kernel ‣Merge Android framework
  • 6. Android Porting: ‣ Android framework library Android framework ‣ASHMEM wakelock shared library ‣ Android framework ‣case study: FreeRunner
  • 7. API Level System Image API Level Release Android 1.5 3 2009.4.27 Android 1.1 2 2009.2.10 Android 1.0 1 2008.9.23 2007.11.5: Android 2007.11.12: Adnroid SDK early look version 2008.1.3: Adnroid Developer Challenge 2008.2.13: Android SDK m5-rc15 2008.5.12: Top 50 Android Application
  • 8. Devices misc... Netbook x86 Phone ARMv4/v5
  • 9. Cupcake MMS WebView Touch events WebView SquirrelFish (JavaScript engine) IME Basic x86 support SIM Application Toolkit 1.0 ...
  • 11. Android Source Code android.git.kernel.org 1. Cupcake x86 ports 2. ./.repo/manifest.xml eee_701 platform x86 ports
  • 12. Android / armv4 git.koolu.org armv4 Koolu s3c2410 / s3c244x Neo FreeRunner
  • 13. Android / armv4 $ mkdir koolu-android $ cd koolu-android $ repo init -u git://git.koolu.org/freerunner/platform/manifest.git -b koolu-1.0 $ repo sync
  • 14.
  • 15. Application Developers Applications change Application Framework Surface Manager Dalvik VM System Media Framework Shared Libraries Image Linux Kernel
  • 16. Product Branch Maintainer Applications Application Framework Surface Manager Dalvik VM rebuild Media Framework Shared Libraries Linux Kernel
  • 17. Hardware Developing Applications Application Framework Surface Manager Dalvik VM change Media Framework Shared Libraries Linux Kernel change
  • 18. Architecture Porting Applications Application Framework Surface Manager Dalvik VM porting Media Framework Shared Libraries Linux Kernel
  • 19. Android Toolchain android-toolchain-20081019 ‣http://android.git.kernel.org/pub/ gcc 4.2.1 / binutils 2.17 / gdb 6.6 ARMV5te+ ABI: EABI, AAPCS --with-float=soft --with=fpu-vfp --enable-threads (single)
  • 20. Android Kernel Binder Ashmem (Android shared memory) PMEM (Processor memory allocator) logcat (Android Logger) wakelock (Android Power Management) Alarm
  • 21. Key Features 2.6.23 2.6.25 2.6.27 2.6.29 1 Alarm Driver O O O O 2 Android Logger O O O O 3 Low Memory Killer O O O O 4 Power Management O O O O 5 USB Gadget O O O O 6 ASHMEM X O O O 7 PMEM X X O O 8 x86 Support X X O O 9 ./drivers/staging/Android/ X X X O
  • 22.
  • 23. binder Android IPC /proc/binder ‣state ‣stats ‣transactions ‣transation_log ‣failed_transation_log
  • 25. PMEM drivers/misc/pmem.c userspace driver
  • 26. $ arm-eabi-gcc -o hello hello.c -Wl,-rpath-link=./cupcake/out/ target/product/generic/obj/lib -L./cupcake/out/target/product/ generic/obj/lib -nostdlib ./cupcake/out/target/product/generic/ obj/lib/crtbegin_dynamic.o -lc Android OS native program
  • 27. Android Android source code (Cupcake) Toolchain EeePC
  • 28. Linux native C programs glibc & shared libs S!"#$%!&'(( Kernel Hardware
  • 29. Android Android Framework Application JNI S!"#$%!&'(( bionic & shared libs Kernel Hardware
  • 30. Android Activity onCreate() myActivity MediaPlayer onCreate() JNI OpenCore bionic S!"#$%!&'((
  • 33. <android>/build/core/combo Makefile darwin-x86.mk macros javac.mk linux-arm.mk linux-x86.mk select.mk target_linux-x86.mk windows-x86.mk
  • 34. GLOBAL CFLAGS $(combo_target)GLOBAL_CFLAGS += -march=armv5te -mtune=xscale -msoft-float -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -include $(call select-android-config-h,linux-arm)
  • 35. GLOBAL CFLAGS for ARMv4 $(combo_target)GLOBAL_CFLAGS += -march=armv4t -mcpu=arm920t -mtune=xscale -msoft-float -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D__ARM_ARCH_4__ -D__ARM_ARCH_4T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -include $(call select-android-config-h,linux-arm)
  • 36. <android>/dalvik/vm/arch JNI Porting generic/ arm/ CallEABI.S CallOldABI.S x86 Call386ABI.S
  • 37. ARM EABI r0-r3 hold first 4 args to a method r9 is given special treatment in some situations, but not for us r10 (sl) seems to be generally available r11 (fp) is used by gcc (unless -fomit-frame-pointer is set) r12 (ip) is scratch -- not preserved across method calls r13 (sp) should be managed carefully in case a signal arrives r14 (lr) must be preserved r15 (pc) can be tinkered with directly
  • 38. JNI Entry r0 JNIEnv (can be left alone) r1 clazz (NULL for virtual method calls, non-NULL for static) r2 arg info * r3 argc (number of 32-bit values in argv) [sp] argv [sp,#4] short signature [sp,#8] func [sp,#12] pReturn
  • 39. Assembly Code #1: armv4/armv5 .Lcopy_done: @ call the method ldr ip, [r4, #8] @ func #ifndef __ARM_ARCH_4__ blx ip #else mov lr, pc bx ip #endif
  • 40. Assembly Code #2: armv4/armv5 #ifndef __ARM_ARCH_4__ ldmdb r4, {r4, r5, r6, r7, r8, r9, sp, pc} #else ldmdb r4, {r4, r5, r6, r7, r8, r9, sp, lr} bx lr #endif
  • 41. Dalvik Interpreter <android>/dalvik/vm/mterp common/ armv4/ armv5te/ x86/
  • 42. Bionic Small and custom C library for the Android platform. A mainly port of BSD C library. Its own small implementation of pthreads based on Linux futexes. Support for x86, ARM and ARM thumb.
  • 43. <android>/bionic Bionic libc/ libdl/ libm/ libstdc++/ libthread_db/ linker/
  • 44. Bionic::libc <android>/bionic/libc arch-arm/ arch-x86/ kernel/ arch-arm/asm/ arch-x86/asm/
  • 45. Android Generated Kernel Header bionic/libc/kernel/ kernel header files Android kernel header Linux kernel header userspace
  • 46. External Library Android library shared library library opencore ~/google-android/external/opencore$ find ./ -name "*.s" -print ./codecs_v2/audio/mp3/dec/src/asm/pvmp3_polyphase_filter_window_gcc.s ./codecs_v2/audio/mp3/dec/src/asm/pvmp3_mdct_18.s ./codecs_v2/audio/mp3/dec/src/asm/pvmp3_dct_9.s ./codecs_v2/audio/mp3/dec/src/asm/pvmp3_dct_9_gcc.s ./codecs_v2/audio/mp3/dec/src/asm/pvmp3_mdct_18_gcc.s ./codecs_v2/audio/mp3/dec/src/asm/pvmp3_polyphase_filter_window.s ./codecs_v2/audio/mp3/dec/src/asm/pvmp3_dct_16_gcc.s
  • 47. sonivox & OpenSSL ./sonivox/arm-hybrid-22k/lib_src/ARM-E_filter_gnu.s ./sonivox/arm-hybrid-22k/lib_src/ARM-E_mastergain_gnu.s ./sonivox/arm-hybrid-22k/lib_src/ARM-E_voice_gain_gnu.s ./sonivox/arm-hybrid-22k/lib_src/ARM-E_interpolate_noloop_gnu.s ./sonivox/arm-hybrid-22k/lib_src/ARM-E_interpolate_loop_gnu.s ./sonivox/arm-wt-22k/lib_src/ARM-E_filter_gnu.s ./sonivox/arm-wt-22k/lib_src/ARM-E_mastergain_gnu.s ./sonivox/arm-wt-22k/lib_src/ARM-E_voice_gain_gnu.s ./sonivox/arm-wt-22k/lib_src/ARM-E_interpolate_loop_gnu.s ./openssl/crypto/bn/asm/pa-risc2W.s ./openssl/crypto/bn/asm/pa-risc2.s ./openssl/crypto/bn/asm/mips3.s ./openssl/crypto/0.9.9-dev/aes/aes-armv4.s ./openssl/crypto/0.9.9-dev/bn/armv4-mont.s ./openssl/crypto/0.9.9-dev/sha/sha256-armv4.s ./openssl/crypto/0.9.9-dev/sha/sha512-armv4.s ./openssl/crypto/0.9.9-dev/sha/sha1-armv4-large.s
  • 48. Android & Kernel SurfaceHolder type SURFACE_TYPE_GPU GPU Graphics Processing Unit SurfaceHolder type SURFACE_TYPE_HARDWARE DMA userspace
  • 49. Android Surface Manager Media Framework SurfaceHolder type SURFACE_TYPE_GPU GPU Graphics Processing Unit SurfaceHolder type SURFACE_TYPE_HARDWARE DMA MediaPlayer OpenCore
  • 50. Surface Manager private SurfaceView mPreview; private SurfaceHolder holder; public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.mediaplayer_2); mPreview = (SurfaceView) findViewById(R.id.surface); holder = mPreview.getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } Surface Manager
  • 51. Media Framework private MediaPlayer mMediaPlayer; public void surfaceCreated(SurfaceHolder holder) { mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(path); mMediaPlayer.setDisplay(holder); mMediaPlayer.prepare(); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); } Media Framework OpenCore
  • 52. New Product File Tree <company_name> <board_name> + Android.mk + product_config.mk + system.prop products + AndroidProducts.mk + <first_product_name>.mk + <second_product_name>.mk
  • 53. Android x86 port (target product = EeePC 701) 1. Get Google Android $ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake $ repo sync 2. Manifest file. <manifest> ... <project name="platform/vendor/asus/eee_701" path="vendor/asus/eee_701"/> ... </manifest> 3. Get EeePC platform. $ repo sync 4. Build Android image. $ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make -j2 installer_img 5. Create USB boot stick. Use make-live script. https://review.source.android.com/Gerrit#change,6475
  • 54. Build EeePC 701 Product Tips # Google API issue $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk) PRODUCT_NAME := eee_701 PRODUCT_DEVICE := eee_701 PRODUCT_POLICY := android.policy_mid PRODUCT_PROPERTY_OVERRIDES += ro.com.android.dataroaming=true Cupcake Google APIs add-ons
  • 55. Build EeePC 701 Product Tips # e2fsprogs issue external/e2fsprogs/Android.mk: --- a/Android.mk +++ b/Android.mk @@ -1,3 +1,3 @@ ifneq ($(TARGET_SIMULATOR),true) -# include $(call all-subdir-makefiles) + include $(call all-subdir-makefiles) endif
  • 58. VirtualBox AMD PCnet32 PCI support VESA VGA graphics support VGA 8x8 font VGA 8x16 font
  • 59. installer.img VDI $ VBoxManage convertromraw -format VDI ./installer.img ./android.vdi
  • 64. Android FreeRunner s3c2410 / s3c244x Neo FreeRunner Mokofly (coming...)
  • 65.
  • 66. android-way.com www.jollen.tw FAQ Jollen Chen <jollen@jollen.org> Text Text Embedded Linux Embedded Linux Linux Openmoko Openmoko Android OS Android Jollen - www.jollen.org/blog Jollen - www.plurk.com/jollenchen