Monday, December 10, 2012

[Androidx86] How to run Angry Birds on Android x86 ICS (A to Z)

This post will help the beginners to modify Androidx86 ICS in order to execute Android Apps such as Angry Birds. Since Androidx86 supports only Intel x86, Atom, the Android apps which developed for ARM cannot execute on the current Androidx86 (ICS). Now, we try to modify the library of Android x86 so that it can translate ARM library to Intel x86. (It can be clearly explained at http://www.buildroid.org/blog/?p=198). Although there are some tips to do, but it is not easy for the beginners. Therefore, i try to write these guides to help anyone can do by themselves from A to Z.

Note that we use Android x86 ICS for this post.

Step 1: Prepare the Linux environment to build Android x86 ISO file. I use Ubuntu 10.4 in this case.
(Following my previous post to install some necessary tools)

Step 2: Now I start from step Download Android x86 Source :
   # cd ~ 
   # mkdir android_src
   # cd android_src
   # repo init -u http://git.android-x86.org/manifest -b ics-x86
   # repo sync
Step 3:
   # cd android_src
   # sudo make iso_img TARGET_PRODUCT=generic_x86
   (This step will take around 4~5 hours)

Step 4:
   Because i run Virtual Box on Windows 7 , then i copy ISO file in "out" folder to Windows 7.
   Run Virtual Box and create new VM with the ISO we copied.
   Follow the install steps Android x86 in Virtual Box  (http://www.android-x86.org/documents/installhowto)
  ***Note: Choose "Yes" in the below box:

Step 5:
   After finish install Androidx86 in Virtual Box, run it.
   Because ICS does not enable eth0, we have to enable it as follows:
   Use "Alt" + "F1" to enter the console mode.
   //Setting static IP
      # ifconfig eth0 "IP_Address" netmask 255.255.255.0 up
      # route add default gw "Gateway_Address" dev eth0

   OR: (dynamic IP : 10.0.x.x)
      # netcfg eth0 up
      # netcfg eth0 dhcp
      # setprop net.dns1 8.8.8.8

 Now go back the graphic mode by "Alt" + "F7", connect internet succesful

Step 6:
   Since i used static IP, then i will use "IP_Address" to connect in this step.
   Due to Androidx86_ICS cannot download any files or apps from internet. Then i try to use ADB (Android Debug Bridge) to install software into Androidx86.
   Download adt-bundle-windows-x86 from http://developer.android.com/sdk/index.html
   Go to  adt-bundle-windows-x86\sdk, Shift + Right Click on Platform-Tool , Choose "Open Command Windows here"
    Try: download : Andftp (http://www.lysesoft.com/products/andftp/) and AngryBirds Rio 1.4.3 (http://download.pandaapp.com/android-app/angry-birds-rio1.4.2-id6743.html#.UUBf2DeHfTo) and put all the downloaded "files.apk" in the same folder with adb.exe
            # adb.exe connect "IP_Address"
            # adb.exe install Andftp.apk

            # adb.exe install AngryBirds.apk 

Step 7: Now Your Androidx86 already installed FtpClient and AngryBirds. But you can not run AngyBird now.
In order to run Angry Birds, we need to add library "houdini" into Androidx86 file system.
In Windows 7: Download the below libs from http://android-x86.sceners.org/en/?p=536
   - libhoudini.so
   - libdvm_houdini.so
   - arm libs

Now, create FTP server in your Windows 7. From Android x86, use FtpClient to connect FtpServer and download all above libs into /sdcard/Download.

Type Alt + F1:
   # cd /sdcard/Download
   # cp libhoudini.so /system/lib
   # cp libdvm_houdini.so /system/lib
   # mkdir /system/lib/arm
   # cp arm_lib/* /system/lib/arm

Reboot Androidx86 and try to run Angry Birds. It will be something like this:


However, the speed is quite slow due to the ARM binary translations.
(Please feel free to ask if you cannot follow any steps).