bulat-icon  Articles  

[+]  Articles


What's new in Android 4.0

by Mohamed Thalib



Since from the Ginger Bread, lot has changed. Most of the user experience related changes are well documented by Google here. But there almost no websites out there which gives what is the difference between the GB and ICS at source code level. Here we try to summaries few difference in source code level that we have discovered based on our experience with Android 2.3 (GB) and Android (4.0).


As Google has indicated before ICS has a single set of UI components, styles, and capabilities for phones, tablets, and other devices.


Build Environment


Androids build system hasn't changed, but various tools' RAM usage has gone up as they have to deal with more complexity. Some of the native modules are really heavy to link, and operations that work globally on the entire set of public SDK APIs need to deal with massive amounts of data. ICS needs sun-java6 where GB and previous versions of Android can only compiled with sun-java5


  • 6GB of download.
  • 25GB disk space to do a single build.
  • 80GB disk space to build all AOSP configs at the same time.
  • 16GB RAM recommended, more preferred, anything less will measurably benefit from using an SSD
  • 5+ hours of CPU time for a single build, 25+ minutes of wall time.
  • 20GB of swap


For anything other than the master branch, you'll need to use Ubuntu 10.04 if you want to be able to build the source code "as is".


Never had I imagined that ICS would require such heavy-duty machines to build. Folks, it's time to upgrade your machines!. Most of this data's are collected based on our experience and from the android building group, Most of the recommendation are by JBQ (jbq@android.com) and other community members.


Target support


Virtual Box Emulator


Android 4.0 supports Virtual Box by default. This is a + for those who want to try build the android stack for x86 targets. Also the android comes up with scripts and make target to easy the task of creation of Virtual box compatible disk's easy, example is here. use vbox_x86 in lunch.

$ make installer_vdi
$ make android_disk_vdi

Still previous version of Android had support for the vbox, but they were not that much mainstream and x86 architecture were not completely supported. But there was a community driven project named www.android-x86.org, which patched the Android source code heavily to run in x86. But this time it works in as is code of android source. it's really cool.

Full_x86 runs in the x86 emulator, which emulates an atom.

$ source build/envsetup.sh
$ lunch full_x86-eng
$ make
$ emulator&

Out of the box, there’s no support for real x86 hardware targets.
Android ICS has a native support panda board.

Communication / Networking


Concerning the network, it works well at a “system level”. Configure VM in VBox to use a “Bridge” type of virtual NIC, so that Android directly access the network and uses the DHCP server in of PC.


  • Wi-Fi Direct – Wi-Fi Direct is a standard that allows Wi-Fi devices to talk to each other without the need for wireless access points (hot spots).
  • NFC (Near Field Communication) – Using NFC sharing datas (like contact, photo, song, application, video, or website link, etc..) instantly between device, electronic payments, is just a tapping of ne NFC device to another


But most wide spread Ethernet is not supported in the Android framework still.




Shape Arabic text on a character basis - Arabic Shaping performs basic operations for "shaping" Arabic text. It is most useful for use with legacy data formats and legacy display technology (simple terminals). All operations are performed on Unicode characters


  • Sensor fusion is the combining of sensory data or data derived from sensors like magnetic filed sensor, gyroscope, accelerometer, etc. The combined result is more accurate, more complete, or more dependable when compared to using them individually [2].
  • Mouse pointer support – The good news is that ICS now includes all the necessary code in the framework to support mouse type input devices (with previous versions you had to hack the framework what is done by android-x86 project.


Just rebuild a kernel with the appropriate PS/2 mouse driver.

$ make installer_vdi
$ make ARCH=x86 menuconfig

And add the PS/2 mouse driver ("Device Drivers" -> "Input device support" -> "Mice" -> "PS/2 mouse")

$ make ARCH=x86
The kernel Image will be in arch/x86/boot/bzImage. Replace the prebuilt vbox kernel in your ICS source code tree with arch/x86/boot/bzImage (or create a dedicated device for this) Rebuild your android_disk.vdi. thats it.
  • OrientationSensor - This is a soft sensor, This is a helper provides data for application. This Computes the device's orientation based on the rotation matrix.
  • SecondOrderLowPassFilter - This too is a soft sensor, which provides digital filter functionality for related DSP application.

Kernel version supported

ICS should run fine with the kernel from Gingerbread. (If you're worried that's too old, keep in mind that the emulator is still running 2.6.29). ICS is shipped with kernel 3.0
What's up with the Android 4.0 AOSP (Android Open Source Project)? I think you would like to know more about how we are using the Android 4.0 source released a while ago.. More on that in the coming blogs.