[1] Android ICS 下載
—————————————————————-
http://source./source/downloading.html 上有最新的ICS 源代碼同步的地址。如果環(huán)境已經(jīng)設(shè)置好了的話,同步最新的代碼非常的簡單:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ repo init -u https://android./platform/manifest -b android-4.0.1_r1
$ repo sync
轉(zhuǎn)注:
主干:$ repo init -u https://android./platform/manifest.git
4.03:$ repo init -u https://android./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配套內(nèi)核kernel3.0下載
$ git clone http://android.git./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)里增加了一個(gè)log文件 v8.log
轉(zhuǎn)注:
(1)
編譯過程中,可能會(huì)由于stdio2.h導(dǎo)致編譯錯(cuò)誤。正確的stdio2.h是./prebuilt/linux-x86/toolchain
/i686-linux-glibc2.7-4.4.3/sysroot/usr/bits/stdio2.h文件,請重新設(shè)置PATH環(huán)境變量,將.
/prebuilt/linux-x86/toolchain/i686-linux-glibc2.7-4.4.3/sysroot/usr放在
PATH的最前。
(2) 編譯時(shí)可能會(huì)提示需要Java 1.6 SE,實(shí)際上編譯時(shí)只需要有Java 1.6 JDK就成
(3) 帶參數(shù)make時(shí),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 模擬器內(nèi)核最新下載地址及編譯步驟
—————————————————————-
url: http://www./Linux/2011-11/47809.htm
由于Android kernel的部分封閉策略,kernel org已經(jīng)將android
kernel踢出主線。原有的同步地址已經(jīng)被重定向,再加上android
kernel本身結(jié)構(gòu)的調(diào)整,很多原來的同步方法已經(jīng)不能使用。下面是最新的方法,適用于編譯android 4.0.1 模擬器的內(nèi)核(qemu
kernel, goldfish branch)。
原有的方法大多使用以下地址同步
$ git clone git://Android.git./kernel/common.git
$ cd common
$ git branch -a
$git checkout remotes/origin/archive/Android-gldfish-2.6.29
但是我們可以在瀏覽器里輸入
Android.git./kernel/common.git
它實(shí)際上已經(jīng)被重定向到
Android./kernel/common.git
但是這個(gè)repo 里已經(jīng)不包含 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
其實(shí) goldfish分支已經(jīng)被獨(dú)立為一個(gè)單獨(dú)的repo:http://android./kernel/goldfish.git
以下是最新的正確的 同步步驟:
$git clone http://android./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 來啟動(dòng)模擬器了:
—————————————————————-
[4] Android ICS 模擬器的啟動(dòng)
—————————————————————-
命令:列出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
命令:啟動(dòng)模擬器,加載自定義的AVD
$ emulator -avd ics
命令:使用自己編譯的內(nèi)核啟動(dòng)模擬器
$emulator -kernel …../kernel/goldfish/arch/arm/boot/zImage &
啟動(dòng)模擬器,到 Setting => About 去看,kernel現(xiàn)在的確是我們自己編譯的版本了。
命令:使用自己編譯的內(nèi)核及images啟動(dòng)模擬器
export DROIDROOT=~/android-sdk-v14-x86
export AVDROOT=~/android-sdk-v14-x86/tools
cd `pwd`/out/target/product/generic
$AVDROOT/emulator -kernel
http://www.cnblogs.com/http://www.cnblogs.com/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