Google开发了gingerbread的源码http://android.git.kernel.org/?p=platform/manifest.git;a=summary,于是把它顺便编译了一把
步骤跟之前的2.1,2.2没啥区别
developer@ubuntu-atcn:~$ cd /git
developer@ubuntu-atcn:/git$ mkdir android2.3-r1
developer@ubuntu-atcn:/git$ cd android2.3-r1/
developer@ubuntu-atcn:/git/android2.3-r1$
developer@ubuntu-atcn:/git/android2.3-r1$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.3_r1
developer@ubuntu-atcn:/git/android2.3-r1$ cat sync.sh
#!/bin/bash
echo "======start repo sync======"
repo sync
while [ $? = 1 ]; do
echo "======sync failed, re-sync again======"
sleep 3
repo sync
done
developer@ubuntu-atcn:/git/android2.3-r1$ sh sync.sh
sync结束直接编译
developer@ubuntu-atcn:/git/android2.3-r1$ make
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRH55
============================================
Checking build tools versions...
build/core/main.mk:76: ************************************************************
build/core/main.mk:77: You are attempting to build on a 32-bit system.
build/core/main.mk:78: Only 64-bit build environments are supported beyond froyo/2.2.
build/core/main.mk:79: ************************************************************
build/core/main.mk:80: *** stop. Stop.
这时会有64bit操作系统的问题,这个如果之前2.2编译过master树的时候应该也会碰到,可以修改makefile绕过去。
有五处地方需要修改
./build/core/main.mk
此处修改
ifneq (64,$(findstring 64,$(build_arch)))
为
ifneq (i686,$(findstring i686,$(build_arch)))
./external/clearsilver/cgi/Android.mk
./external/clearsilver/java-jni/Android.mk
./external/clearsilver/util/Android.mk
./external/clearsilver/cs/Android.mk
这4处注释掉
-LOCAL_CFLAGS += -m64
-LOCAL_LDFLAGS += -m64
然后就可以编译了。这时发现另一个问题,从2.3开始,需要的JDK从1.5转从1.6,需要更新一下JDK包
下面就是漫长的编译过程,直到生成system.img
如果是跑emulator的话,只需要替换ramdisk.img 和system.img就可以了