Play with Android Champ Yen http://champyen.blogspot.com [email_address]
Kernels for versions of Android
Features Linux-based with modification for Android Bionic C library, SQLite, OpenGL ES, Webkit, OpenCore.. Dex format framework, application Java Language for Development JNI used for performance critical application. Far different from known GNU/Linux!
License Perspective Kernel - GNU Public License Android - Apache License
Why Android? Since system is not bound to ARM platform, it is flexible to design cost-efficient ICs Open Source (no blackbox anymore) Open Platform (community supported kernel/app. development) No license fee (no extra product tax) licensed SDK is not needed
longer software support (active community)
How to start? There are many active Android projects for several open platforms. 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) try to build a workable Android system for VirtualBox/QEMU Many building tutorials can be get by searching on Google. http://code.google.com/p/live-android/
http:// code.google.com/p/livedroid /
How to start? (cont.) Current Android Mobile Phones Nokia N770/N8x0, Zaurus PDA, OpenMoko, SmartQ 5/7 MID BeagleBoard, OMAP 35x EVM 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/ develop application with application framework built-in emulator & debugger
for development native libraries for performance critical implementation.
API Changes significantly Take care of API Levels http://developer.android.com/intl/fr/guide/appendix/api-levels.html
supported languages increase significantly
Build it Yourself! 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 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 / generic building guide: http:// source.android.com /download 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 system compatibility (link to /system/etc)
Android main system directories
Customization It may take much time to integrate/customize specific devices for Android. Keyboard/Mouse/Touchscreen Telephony (GSM, GPRS, 3G)
User Interface / Applications
Optimization Most Android optimization must be done in native library and kernel layer. It may take great effort to do just an optimization item. 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)
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