Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
Android Architecture


Play With Android

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Play With Android

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

    Jan. 8, 2021
  • wiliwe

    Feb. 19, 2017
  • JenniferKnibbe

    Sep. 15, 2015
  • pranav12

    Jun. 20, 2012
  • ahmadhuzaifah

    Nov. 14, 2011
  • iven123

    May. 1, 2011
  • andrd

    Nov. 26, 2010
  • ILikeMov

    Aug. 31, 2010
  • ych1

    Aug. 5, 2010
  • jserv

    Mar. 20, 2010
  • yuwenjen

    Sep. 23, 2009
  • cynosuretw

    Sep. 21, 2009


Total views


On Slideshare


From embeds


Number of embeds