Download Android 4.0.1 source code, compile and run the simulator
Http://blog.csdn.net/rambo2188/article/details/6943382
Http://www.linuxidc.com/Linux/2011-11/47808.htm
Note: This article was first launched by rambo2188 on csdn. It seems that this article is reprinted on linuxidc.
----------------------------------------------------------------
[1] Download Android ICs
----------------------------------------------------------------
The http://source.android.com/source/downloading.html has the latest ICS Source Code Synchronization address. If the environment has been set up, it is very easy to synchronize the latest code:
$ Mkdir working_directory
$ CD working_directory
$ Repo init-u https://android.googlesource.com/platform/manifest-B android-4.0.1_r1
$ Repo sync
Note:
Trunk: $ repo init-u https://android.googlesource.com/platform/manifest.git
4.03: $ repo init-u https://android.googlesource.com/platform/manifest.git-B android-4.0.3_r1
After the download is complete, it mainly contains the following directories:
Abi bionic bootable build CTS Dalvik development device docs external frameworks hardware libcore makefile ndk out packages prebuilt SDK System
Android4.01 kernel kernel3.0 download
$ Git clone http://android.git.kernel.org/kernel/common.git
$ Git branch-
$ Git checkout remotes/ORIGIN/Android-3.0
----------------------------------------------------------------
[2] compilation of Android ICs
----------------------------------------------------------------
Source./build/envsetup. Sh
Lunch SDK-Eng
Make
After compilation, a log file v8.log is added to the working directory ($ top ).
Note:
(1) compilation errors may occur due to stdio2.h during compilation. The correct stdio2.h is. /prebuilt/linux-x86/toolchain/i686-linux-glibc2.7-4.4.3/sysroot/usr/bits/stdio2.h file, Please reset PATH environment variable, set. /prebuilt/linux-x86/toolchain/i686-linux-glibc2.7-4.4.3/sysroot/usr put at the beginning of the path.
(2) during compilation, you may be prompted to require Java 1.6 se. In fact, you only need to have Java 1.6 JDK
(3) When the make parameter is included, toolchain indicates that absolute paths are preferred, for example: make-J2 arch = arm cross_compile =/home/Hyla/ICs/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/ARM-Eabi-
----------------------------------------------------------------
[3] latest Android 4.0.1 simulator kernel and compilation steps
----------------------------------------------------------------
URL: http://www.linuxidc.com/Linux/2011-11/47809.htm
Due to some closed policies of Android kernel, kernel Org has kicked Android kernel out of the main line. The original synchronization address has been redirected, and the structure of the android kernel itself has been adjusted, many of the original synchronization methods are no longer available. The following is the latest method for compiling the kernel (qemu kernel, Goldfish Branch) of the android 4.0.1 simulator ).
Most of the original methods use the following address Synchronization
$ Git clone git: // android.git.kernel.org/kernel/common.git
$ CD common
$ Git branch-
$ Git checkout remotes/ORIGIN/archive/Android-gldfish-2.6.29
However, you can enter
Android.git.kernel.org/kernel/common.git
It has actually been redirected
Android.googlesource.com/kernel/common.git
However, this repo does not contain the branch of goldfish. If we use git branch-A after synchronization, we will see only the latest 3.0 and 2.6.39 branches:
$ Git branch-
* (No Branch)
Master
Remotes/ORIGIN/head-> origin/Master
Remotes/ORIGIN/Android-2.6.39
Remotes/ORIGIN/Android-3.0
Remotes/ORIGIN/Master
In fact, the goldfish Branch has been separate into a separate repo: http://android.googlesource.com/kernel/goldfish.git
The following are the latest and correct synchronization steps:
$ Git clone http://android.googlesource.com/kernel/goldfish.git
$ CD goldfish
$ Git branch-
* (No Branch)
Master
Remotes/ORIGIN/head-> origin/Master
Remotes/ORIGIN/Android-goldfsh-2.6.29
Remotes/ORIGIN/Master
$ Git checkout remotes/ORIGIN/Android-goldfish-2.6.29
The compilation steps are basically not changed, but the new config is required:
$ Make arch = arm goldfish_armv7_defconfig
$ Make arch-arm cross_compile = arm-Eabi-
...
Objcopy ARCH/ARM/boot/zimage
Kernel: ARCH/ARM/boot/zimage is ready
Then you can start the simulator with the new kernel IMG:
----------------------------------------------------------------
[4] startup of Android ICS Simulator
----------------------------------------------------------------
Command: List AVD platforms
$ CD out/host/linux-x86/sdks/android-sdk_eng.xxx_linux-x86/tools
$ Android list targets
Available Android targets:
----------
ID: 1 or "Android-14"
Name: IOS 4.0
Type: Platform
API level: 14
Revision: 2
Skins: qvga, wsvga, hvga, wvga854, wxga720, wqvga432, wvga800 (default), wqvga400, wxga800
Abis: armeabi-v7a
Command: Customize AVD
$ Android create AVD-T 1-N ICs
Auto-selecting single Abi armeabi-v7a
The android 4.0 is a basic Android platform.
Do you wish to create a custom hardware profile [No]
Created AVD 'ics 'based on Android 4.0, arm (armeabi-v7a) processor,
With the following hardware config:
HW. LCD. density = 240
VM. heapsize = 24
HW. ramsize = 512
Command: Start the simulator and load the custom AVD.
$ Emulator-AVD ICs
Command: run the self-compiled kernel to start the simulator.
$ Emulator-kernel.../kernel/goldfish/ARCH/ARM/boot/zimage &
Start the simulator and go to setting => about to check whether the kernel is a self-compiled version.
Command: Use the self-compiled kernel and images to start the simulator.
Export droidroot = ~ Android-sdk-v14-x86
Export avdroot = ~ Android-sdk-v14-x86/tools
CD 'pwd'/out/target/product/generic
$ Avdroot/emulator-kernel .. /.. /.. /.. /kernel/ARCH/ARM/boot/zimage-show-kernel-partition-size 256-memory 256-skindir $ droidroot/platforms/Android-14/skins-skin wvga800-shell- sysdir. /-data userdata. IMG-ramdisk. IMG-system. IMG-sdcard
/~ /. Android/AVD/wvga800v14/sdcard. img