Play with Android Champ Yen http://champyen.blogspot.com [email_address]
Outlines Architecture Why Android!? How to start? Software Development Take Care of API Levels! Build it Yourself!  Kernels for versions of Android Customization Optimization
Android Architecture
Features Architecutes ARM, x86, MIPS  Kernel Linux-based with modification for Android Native Layer Bionic C library, SQLite, OpenGL ES, Webkit, OpenCore.. Application Layer Dalvik Virtual Machine Dex format framework, application Application Development Java Language for Development JNI used for performance critical application. Far different from known GNU/Linux! http://walkingice.twbbs.org/~walkingice/files/document/coscup_2009_walkingice.pdf
License Perspective Kernel - GNU Public License Android - Apache License
Why Android? IC Design House Since system is not bound to ARM platform, it is flexible to design cost-efficient ICs Product Manufactor Consistency Open Source (no blackbox anymore) Open Platform (community supported kernel/app. development) No license fee (no extra product tax)  Software Developer easy development on PC licensed SDK is not needed Open platform User full-feature system many applications longer software support (active community)
How to start? There are many active Android projects for several open platforms. x86 platform EeePC 701 Android 1.5 adds official eeepc701 support and most x86 porting base on this. 0xlab’s android-eeepc project  http://gitorious.org/android-eeepc Extra hardware support (ex: 3D) PC platform VirtualBox/QEMU try to build a workable Android system for VirtualBox/QEMU Many building tutorials can be get by searching on Google. Android LiveCD http://code.google.com/p/live-android/ http:// code.google.com/p/livedroid /
How to start? (cont.) ARM platform ( >= ARMv5) exists product Current Android Mobile Phones Nokia N770/N8x0, Zaurus PDA, OpenMoko, SmartQ 5/7 MID development boards BeagleBoard, OMAP 35x EVM S3C6410 boards FreeScale EVBs qemu MIPS http:// www.mips.com /android/ More supported architecture by porting (ex: PowerPC)
Software Development For those who only have interests on develop applications on Android http://developer.android.com/sdk/ SDK develop application with application framework built-in emulator & debugger  NDK for development native libraries for performance critical implementation.
1.0 r1, r2 API Level 1 1.1 API Level 2 1.5 r1 ~ r3 API Level 3 API Changes significantly supported languages increase significantly 1.6 API Level 4 Take care of API Levels http://developer.android.com/intl/fr/guide/appendix/api-levels.html
Build it Yourself! For fun or for product? Just for fun is easy. enjoy writing code & hacking! Product quality takes great time to achive. (so be patient and take it easy!) Linux kernel with Android support http:// android.git.kernel.org/?p =kernel/ common.git;a =summary BSP for target platfrom For different versions of Android, different supports are needed. try different kernel options! Good ideas? Just do it! Ex:  http:// code.google.com/p/compcache / Building Android System generic building guide:  http:// source.android.com /download 3 images generated yaffs2 image : system.img usrdata.img try!  http:// code.google.com/p/unyaffs / gzipped cpio archive: ramdisk.img further target platform customization is needed Where is my WIFI? Audio!? 3D support?
Kernels for Android versions Basic support : logger, binder, network, power  ASHMEM : Android Shared Memory Subsystem PMEM : Physical Memory Allocator 2.6.23 2.6.25 2.6.27 2.6.29 Basic Support ○  ○  ○  ○  ASHMEM ╳  ○  ○  ○  PMEM ╳  ╳  ○  ○  2.6.23 2.6.25 2.6.27 2.6.29
System Directories Structure /data to keep user data /etc system compatibility (link to /system/etc) /system Android main system directories /proc, /sys /cache
Customization It may take much time to integrate/customize specific devices for Android. Keyboard/Mouse/Touchscreen Audio/Display/Camera Network (Wifi, Ethernet) USB/Bluetooth Telephony (GSM, GPRS, 3G) User Interface / Applications Power Management System initialization
Optimization Most Android optimization must be done in native library and kernel layer. It may take great effort to do just an optimization item. Dalvik - JIT Native library optimization – (add VFP, NEON, MMX, SSE.. support) Display – (accelerated fb, OSD, layers) Graphics – OpenGL ES (Hardware Acceleration) Multimedia – OpenMax (SIMD, DSP or Hardware Codec) Power Management
Optimization Example 0xlab intends to make use of several feature of OMAP 3530 on BeagleBoard (includes NEON, DSP, 3D and OMAP DSS2) to improve performance of graphics and multimedia on Android. And some features have been implemented. Rock the World! 0xlab!
Q & A

Play With Android

  • 1.
    Play with AndroidChamp Yen http://champyen.blogspot.com [email_address]
  • 2.
    Outlines Architecture WhyAndroid!? How to start? Software Development Take Care of API Levels! Build it Yourself! Kernels for versions of Android Customization Optimization
  • 3.
  • 4.
    Features Architecutes ARM,x86, MIPS Kernel Linux-based with modification for Android Native Layer Bionic C library, SQLite, OpenGL ES, Webkit, OpenCore.. Application Layer Dalvik Virtual Machine Dex format framework, application Application Development Java Language for Development JNI used for performance critical application. Far different from known GNU/Linux! http://walkingice.twbbs.org/~walkingice/files/document/coscup_2009_walkingice.pdf
  • 5.
    License Perspective Kernel- GNU Public License Android - Apache License
  • 6.
    Why Android? ICDesign House Since system is not bound to ARM platform, it is flexible to design cost-efficient ICs Product Manufactor Consistency Open Source (no blackbox anymore) Open Platform (community supported kernel/app. development) No license fee (no extra product tax) Software Developer easy development on PC licensed SDK is not needed Open platform User full-feature system many applications longer software support (active community)
  • 7.
    How to start?There are many active Android projects for several open platforms. x86 platform EeePC 701 Android 1.5 adds official eeepc701 support and most x86 porting base on this. 0xlab’s android-eeepc project http://gitorious.org/android-eeepc Extra hardware support (ex: 3D) PC platform VirtualBox/QEMU try to build a workable Android system for VirtualBox/QEMU Many building tutorials can be get by searching on Google. Android LiveCD http://code.google.com/p/live-android/ http:// code.google.com/p/livedroid /
  • 8.
    How to start?(cont.) ARM platform ( >= ARMv5) exists product Current Android Mobile Phones Nokia N770/N8x0, Zaurus PDA, OpenMoko, SmartQ 5/7 MID development boards BeagleBoard, OMAP 35x EVM S3C6410 boards FreeScale EVBs qemu MIPS http:// www.mips.com /android/ More supported architecture by porting (ex: PowerPC)
  • 9.
    Software Development Forthose who only have interests on develop applications on Android http://developer.android.com/sdk/ SDK develop application with application framework built-in emulator & debugger NDK for development native libraries for performance critical implementation.
  • 10.
    1.0 r1, r2API Level 1 1.1 API Level 2 1.5 r1 ~ r3 API Level 3 API Changes significantly supported languages increase significantly 1.6 API Level 4 Take care of API Levels http://developer.android.com/intl/fr/guide/appendix/api-levels.html
  • 11.
    Build it Yourself!For fun or for product? Just for fun is easy. enjoy writing code & hacking! Product quality takes great time to achive. (so be patient and take it easy!) Linux kernel with Android support http:// android.git.kernel.org/?p =kernel/ common.git;a =summary BSP for target platfrom For different versions of Android, different supports are needed. try different kernel options! Good ideas? Just do it! Ex: http:// code.google.com/p/compcache / Building Android System generic building guide: http:// source.android.com /download 3 images generated yaffs2 image : system.img usrdata.img try! http:// code.google.com/p/unyaffs / gzipped cpio archive: ramdisk.img further target platform customization is needed Where is my WIFI? Audio!? 3D support?
  • 12.
    Kernels for Androidversions Basic support : logger, binder, network, power ASHMEM : Android Shared Memory Subsystem PMEM : Physical Memory Allocator 2.6.23 2.6.25 2.6.27 2.6.29 Basic Support ○ ○ ○ ○ ASHMEM ╳ ○ ○ ○ PMEM ╳ ╳ ○ ○ 2.6.23 2.6.25 2.6.27 2.6.29
  • 13.
    System Directories Structure/data to keep user data /etc system compatibility (link to /system/etc) /system Android main system directories /proc, /sys /cache
  • 14.
    Customization It maytake much time to integrate/customize specific devices for Android. Keyboard/Mouse/Touchscreen Audio/Display/Camera Network (Wifi, Ethernet) USB/Bluetooth Telephony (GSM, GPRS, 3G) User Interface / Applications Power Management System initialization
  • 15.
    Optimization Most Androidoptimization must be done in native library and kernel layer. It may take great effort to do just an optimization item. Dalvik - JIT Native library optimization – (add VFP, NEON, MMX, SSE.. support) Display – (accelerated fb, OSD, layers) Graphics – OpenGL ES (Hardware Acceleration) Multimedia – OpenMax (SIMD, DSP or Hardware Codec) Power Management
  • 16.
    Optimization Example 0xlabintends to make use of several feature of OMAP 3530 on BeagleBoard (includes NEON, DSP, 3D and OMAP DSS2) to improve performance of graphics and multimedia on Android. And some features have been implemented. Rock the World! 0xlab!
  • 17.