Android 4.0.1 源码下载,模拟器编译和运行
http://blog.csdn.net/rambo2188/article/details/6943382
http://www.linuxidc.com/Linux/2011-11/47808.htm
转注:本文由rambo2188在CSDN上首发,linuxidc上的貌似该文的转载

----------------------------------------------------------------
[1] Android ICS 下载
----------------------------------------------------------------

http://source.android.com/source/downloading.html 上有最新的ICS 源代码同步的地址。如果环境已经设置好了的话,同步最新的代码非常的简单:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
$ repo sync
转注:

主干:$ 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

下载完成后主要包含以下目录:

abi bionic bootable build cts dalvik development device docs external frameworks hardware libcore Makefile ndk out packages prebuilt sdk system

Android4.01配套内核kernel3.0下载
$ git clone http://android.git.kernel.org/kernel/common.git
$ git branch -a
$ git checkout remotes/origin/android-3.0

----------------------------------------------------------------
[2] Android ICS 的编译
----------------------------------------------------------------
source ./build/envsetup.sh
lunch sdk-eng
make

编译完成后工作目录($TOP)里增加了一个log文件 v8.log

转注:

(1) 编译过程中,可能会由于stdio2.h导致编译错误。正确的stdio2.h是./prebuilt/linux-x86/toolchain/i686-linux-glibc2.7-4.4.3/sysroot/usr/bits/stdio2.h文件,请重新设置PATH环境变量,将./prebuilt/linux-x86/toolchain/i686-linux-glibc2.7-4.4.3/sysroot/usr放在PATH的最前。

(2) 编译时可能会提示需要Java 1.6 SE,实际上编译时只需要有Java 1.6 JDK就成

(3) 带参数make时,toolchain说明最好使用绝对路径,如:make -j2 ARCH=arm CROSS_COMPILE=/home/hyla/ics/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-

----------------------------------------------------------------
[3] Android 4.0.1 模拟器内核最新下载地址及编译步骤
----------------------------------------------------------------
url: http://www.linuxidc.com/Linux/2011-11/47809.htm


由于Android kernel的部分封闭策略,kernel org已经将android kernel踢出主线。原有的同步地址已经被重定向,再加上android kernel本身结构的调整,很多原来的同步方法已经不能使用。下面是最新的方法,适用于编译android 4.0.1 模拟器的内核(qemu kernel, goldfish branch)。

原有的方法大多使用以下地址同步
$ git clone git://Android.git.kernel.org/kernel/common.git
$ cd common
$ git branch -a
$git checkout remotes/origin/archive/Android-gldfish-2.6.29

但是我们可以在浏览器里输入
Android.git.kernel.org/kernel/common.git
它实际上已经被重定向到
Android.googlesource.com/kernel/common.git

但是这个repo 里已经不包含 goldfish的分支了。如果同步下来后我们用 git branch -a 将看到只有最新的 3.0 和2.6.39的分支:
$git branch -a
* (no branch)
master
remotes/origin/HEAD -> origin/master
remotes/origin/android-2.6.39
remotes/origin/android-3.0
remotes/origin/master

其实 goldfish分支已经被独立为一个单独的repo:http://android.googlesource.com/kernel/goldfish.git
以下是最新的正确的 同步步骤:

$git clone http://android.googlesource.com/kernel/goldfish.git
$cd goldfish
$git branch -a
* (no branch)
master
remotes/origin/HEAD -> origin/master
remotes/origin/android-goldfish-2.6.29
remotes/origin/master
$git checkout remotes/origin/android-goldfish-2.6.29

编译步骤基本没有变,但需要使用新的config:
$ 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

然后就可以用着新的kernel img 来启动模拟器了:

----------------------------------------------------------------
[4] Android ICS 模拟器的启动
----------------------------------------------------------------
命令:列出AVD平台
$ cd out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86/tools
$ android list targets
Available Android targets:
----------
id: 1 or "Android-14"
Name: Android 4.0
Type: Platform
API level: 14
Revision: 2
Skins: QVGA, WSVGA, HVGA, WVGA854, WXGA720, WQVGA432, WVGA800 (default), WQVGA400, WXGA800
ABIs : armeabi-v7a

命令:自定义AVD
$ android create avd -t 1 -n ics
Auto-selecting single ABI armeabi-v7a
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

命令:启动模拟器,加载自定义的AVD
$ emulator -avd ics
命令:使用自己编译的内核启动模拟器
$emulator -kernel ...../kernel/goldfish/arch/arm/boot/zImage &
启动模拟器,到 Setting => About 去看,kernel现在的确是我们自己编译的版本了。
命令:使用自己编译的内核及images启动模拟器

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 ramdisk.img -system system.img -sdcard /~/.android/avd/wvga800v14/sdcard.img

更多相关文章

  1. android:制作system.img(yaffs2)镜像
  2. Android开发从零开始之java-泛型初步
  3. ubuntu NDK 的安装
  4. Android(安卓)编译NDK
  5. 【【【常用的ubuntu第三方工具及android命令(自存档)】】】二
  6. android 命令(adb shell)进入指定模拟器或设备
  7. CyanogenMod 编译 Google Galaxy Nexus (GSM) 全过程
  8. 在android平台上编译libpcap-0.9.8 和 jnetpcap-1.2.rc1
  9. 在android平台上编译libpcap-0.9.8 和 jnetpcap-1.2.rc1

随机推荐

  1. 解决 Android(安卓)Studio 乱码问题
  2. Android(安卓)Studio SVN配置忽略文件 1.
  3. Android学习笔记(一):基本概念
  4. android五子棋游戏源码
  5. Android应用权限及意义
  6. Android(安卓)Settings添加选项
  7. android studio 更新 Gradle错误解决方法
  8. 有关布局问题:TextView、EditText……(二)
  9. Netbeans 装Android
  10. Android运行显示 Android(安卓)Device Ch