Ubuntu12.04编译Android2.3.4
1.下载Ubuntu
ubuntu-12.04-dvd-i386.iso2.使用U盘安装,启动盘制作用unetbootin-windows-568工具即可3.虚拟机用的是VMware-workstation-full-8.0.2-591240.exe破解版本,或者直接安装在机器上4.虚拟机安装vmware tools 打开虚拟机,点击install vmware tools把 vmware tools拖到桌面上(命令复制时由于有空格 需要添加双引号“”),ctrl+alt+t进入终端,输入sudo su 输入密码获取root权限,然后把vmware tools CP到/tmp中tar vzxf vmwaretools解压后到 vmware-tools-distrib里面输入./vmware-install.pl安装,根据提示到出现enjoy,--the vmware team就成功安装了。可以通过在终端中输入如下命令来运行它: $ /usr/bin/vmware-toolbox 或者让vmware-toolbox实现开机自动运行。点击Ubuntu菜单:System——首选项——会话—— Startup Programs,Add一个Name叫“vmware-toolbox”,Command是“/usr/bin/vmware-toolbox”的启动程序。这样每次开机后就能自动运行VMware Tools了5.更新源sudo cp /etc/apt/sources.list /etc/apt/sources.list_back (这是备份源列表) sudo gedit /etc/apt/sources.list (这是编辑源列表)sudo cp /etc/apt/sources.list_backup /etc/apt/sources_list(恢复源列表)sudo apt-get update && sudo apt-get upgradesudo apt-get install ubuntu-restricted-extras一些常用的源列表:deb natty multiversedeb-src natty multiversedeb natty-updates multiversedeb-src natty-updates multiversedeb natty-security main restricteddeb-src natty-security main restricteddeb natty-security universedeb-src natty-security universedeb natty-security multiversedeb-src natty-security multiversedeb natty partnerdeb-src natty partner台湾源deb natty main universe restricted multiversedeb-src natty main universe restricted multiversedeb natty-security universe main multiverse restricteddeb-src natty-security universe main multiverse restricteddeb natty-updates universe main multiverse restricteddeb-src natty-updates universe main multiverse restricted网易源(速度很快)deb natty main universe restricted multiversedeb-src natty main universe restricted multiversedeb natty-security universe main multiverse restricteddeb-src natty-security universe main multiverse restricteddeb natty-updates universe main multiverse restricteddeb natty-proposed universe main multiverse restricteddeb-src natty-proposed universe main multiverse restricteddeb natty-backports universe main multiverse restricteddeb-src natty-backports universe main multiverse restricteddeb-src natty-updates universe main multiverse restricted上海源deb natty main universe restricted multiversedeb-src natty main universe restricted multiversedeb natty-security universe main multiverse restricteddeb-src natty-security universe main multiverse restricteddeb natty-updates universe main multiverse restricteddeb natty-proposed universe main multiverse restricteddeb-src natty-proposed universe main multiverse restricteddeb natty-backports universe main multiverse restricteddeb-src natty-backports universe main multiverse restricteddeb-src natty-updates universe main multiverse restricted搜狐源deb natty main universe restricted multiversedeb-src natty main universe restricted multiversedeb natty-security universe main multiverse restricteddeb-src natty-security universe main multiverse restricteddeb natty-updates universe main multiverse restricteddeb natty-proposed universe main multiverse restricteddeb-src natty-proposed universe main multiverse restricteddeb natty-backports universe main multiverse restricteddeb-src natty-backports universe main multiverse restricteddeb-src natty-updates universe main multiverse restricted6.Android版本代号Code name Version API level (no code name) 1.0 API level 1 (no code name) 1.1 API level 2 Cupcake 1.5 API level 3, NDK 1 Donut 1.6 API level 4, NDK 2 Eclair 2.0 API level 5 Eclair 2.0.1 API level 6 Eclair 2.1 API level 7, NDK 3 Froyo 2.2.x API level 8, NDK 4 Gingerbread 2.3 - 2.3.2 API level 9, NDK 5 Gingerbread 2.3.3 - 2.3.7 API level 10 Honeycomb 3.0 API level 11 Honeycomb 3.1 API level 12, NDK 6 Honeycomb 3.2.x API level 13 IceCreamSandwich 4.0.1 - 4.0.2 API level 14, NDK 7 IceCreamSandwich 4.0.3 - 4.0.4 API level 157.Android编译环境配置
vim ~/.bashrc添加:export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_32 export JRE_HOME=${JAVA_HOME}/jreexport HOME_BIN=~/bin/export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATHexport JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/binexport ANDROID_SDK_HOME=/home/xch/bin/out/host/linux-x86/sdk/android-sdk_eng.xch_linux-x86export ANDROID_PRODUCT_OUT=/home/xch/bin/out/target/product/genericexport PATH=${PATH}:${JAVA_PATH}:${HOME_BIN}:${ANDROID_SDK_HOME}/tools默认的PATH,防止修改PATH后出错,可以用来修正
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin修改完后source ~/.bashrc一下就可以了8.Android源码下载
可参考官方文档:可能需要预先安装一些软件:sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-devsudo apt-get install makesudo apt-get install gccsudo apt-get install g++sudo apt-get install libc6-devsudo apt-get install patchsudo apt-get install texinfosudo apt-get install zlib1g-devsudo apt-get install valgrindsudo apt-get install python2.5(或者更高版本)sudo apt-get install curlsudo apt-get install sun-java5-jdk或者1.6$ mkdir ~/bin
$ PATH=~/bin:$PATH(这一步在前面环境变量那里设置了)$ curl > ~/bin/repo$ chmod a+x ~/bin/reporepo init -u -b android-2.3.4_r1repo sync如果下载源码出现被拒绝的错误,可以google一下解决方法,下面是其中一个解决方法:
curl "" > ~/bin/repo chmod a+x ~/bin/repo PATH=~/bin:$PATH mkdir WORKING_DIRECTORY cd WORKING_DIRECTORY //repo init -u git://codeaurora.org/platform/manifest.git -b gingerbread repo init -u git://codeaurora.org/platform/manifest.git -b android-2.3.4_r1repo sync然后漫长的等待......9.编译源码32位机要修改下面的文件:build/core/main.mk ifeq ($(BUILD_OS),linux)build_arch := $(shell uname -m) ---ifneq (64,$(findstring 64,$(build_arch))) +++ifneq (i686,$(findstring i686,$(build_arch)))$(warning************************************************************)$(warning You are attempting to build on a 32-bit system.) $(warning Only 64-bit build environments are supported beyondfroyo/2.2.)(--- means delete that line, +++ means add that line)and change the code in four mk files below from “+=-m64” to “+=-m32”external/clearsilver/cgi/Android.mkexternal/clearsilver/java-jni/Android.mkexternal/clearsilver/util/Android.mkexternal/clearsilver/cs/Android.mk LOCAL_CFLAGS += -m32LOCAL_LDFLAGS += -m32编译过程中出现下面2个问题及解决方法:
1.[out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] error 1$ gedit frameworks/base/libs/utils/Android.mkLOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)改为:LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive2.make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] error 1/build/core/combo/HOST_linux-x86.mkHOST_GLOBAL_CFLAGS+= -D_FORTIFY_SOURCE=0修改为:HOST_GLOBAL_CFLAGS+= -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0然后就可以编译了:$make -j2(使用2个线程编译)漫长的等待....编译SDK$make PRODUCT-sdk-sdk(又是漫长的等待....)成功后可用模拟器测试:$emulator