android 4.0.3最新源码下载编译
2012-02-27 13:38
537 查看
最新的android4.0源代码公布以后,相信很多人和我一样都跃跃欲试,其实4.0的代码下载和编译和以前的版本差不多,但是有一些小的差别,写下来供不明真相的新手来参考首先,开发环境,google建议在ubuntu10.0.4下,并且最好是64位,既然是为了工作和学习,就尽量按照官方要求的来吧。Python2.5--2.7ubuntu10.0.4已经默认安装了,所以不需要安装,其他环境需要安装JDK6编译4.0需要jdk6,sdk的编译需要jdk5Git1.7ornewer如果你的ubuntu是32位的,请在源码下载后编译前按以下步骤修改:下载完源码后,修改下面四个文件:external/clearsilver/cgi/Android.mk
external/clearsilver/java-jni/Android.mk
external/clearsilver/util/Android.mk
external/clearsilver/cs/Android.mk将其中的LOCAL_CFLAGS+=–m64
LOCAL_LDFLAGS+=–m64修改为LOCAL_CFLAGS+=–m32
LOCAL_LDFLAGS+=–m32在build/core/main.mk找到ifneq(64,$(findstring64,$(build_arch)))将其修改为ifneq(i686,$(findstringi686,$(build_arch)))如果你装的ubuntu是最新的11.04打头的,由于内核版本的bug可能会在编译的最后出现头文件丢失的错误比如:
,请按照以下方法修复:repodownloadplatform/external/qemu22776/1如果你是10.0.4就不要做多余的事情了,如果你修复了,编译出的版本可能会出现黑屏现象进入不了系统,切记!编译的环境不同,碰到的问题也会千奇百怪,如果你编译出问题了请养成google和百度的习惯1:jdk的安装比较简单,就不做介绍了2:安装依赖库:64-bit:
external/clearsilver/java-jni/Android.mk
external/clearsilver/util/Android.mk
external/clearsilver/cs/Android.mk将其中的LOCAL_CFLAGS+=–m64
LOCAL_LDFLAGS+=–m64修改为LOCAL_CFLAGS+=–m32
LOCAL_LDFLAGS+=–m32在build/core/main.mk找到ifneq(64,$(findstring64,$(build_arch)))将其修改为ifneq(i686,$(findstringi686,$(build_arch)))如果你装的ubuntu是最新的11.04打头的,由于内核版本的bug可能会在编译的最后出现头文件丢失的错误比如:
,请按照以下方法修复:repodownloadplatform/external/qemu22776/1如果你是10.0.4就不要做多余的事情了,如果你修复了,编译出的版本可能会出现黑屏现象进入不了系统,切记!编译的环境不同,碰到的问题也会千奇百怪,如果你编译出问题了请养成google和百度的习惯1:jdk的安装比较简单,就不做介绍了2:安装依赖库:64-bit:
$sudoapt-getinstallgit-coregnupgflexbisongperfbuild-essential\ zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\ x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\ libgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\ libxml2-utilsxsltproc
32-bit
$sudoapt-getinstallgit-coregnupgflexbisongperfbuild-essential\ zipcurlzlib1g-devlibc6-devlibncurses5-devx11proto-core-dev\ libx11-devlibreadline6-devlibgl1-mesa-devtofrodospython-markdown\ libxml2-utilsxsltproc
OnUbuntu10.10:
$sudoln-s/usr/lib32/mesa/libGL.so.1/usr/lib32/mesa/libGL.so
OnUbuntu11.10:
$sudoapt-getinstalllibx11-dev:i386
3:下载Repo
$mkdir~/bin$PATH=~/bin:$PATH
$curlhttps://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo$chmoda+x~/bin/repo
4:创建源码目录:
$mkdirANDROID_SOURCE
$cdANDROID_SOURCE
5:获取git上的android源码版本[code]
$repoinit-u'target='_blank'>https://android.googlesource.com/platform/manifest[/code] 我们下载最新版$repoinit-uhttps://android.googlesource.com/platform/manifest-bandroid-4.0.3_r1 此时需要你填写用户名和email 填写后即可执行同步命令6:下载源码$reposync可加参数:-jxx代表开启多少个线程来下载源码源码+repo一共13G左右(因为repo会自动执行checkout命令)如果中间出错或者网络不稳定,可以重新初始化repo,用同一个email即可实现本地git库和服务器git库的同步编译源码 下载完源码后进入源码主目录1:执行:$sourcebuild/envsetup.shsouce命令执行的是源码包build目录下的envsetup文件 可以看出这个文件里定义了很多函数供编译使用functionhelp() functionget_abs_build_var() functionget_build_var() functioncheck_product() functioncheck_variant() functionsetpaths() functionprintconfig() functionset_stuff_for_environment() functionset_sequence_number() functionsettitle() functionchoosetype() functionchooseproduct() functionchoosevariant() functiontapas() functionchoosecombo() functionprint_lunch_menu() functionlunch() functiongettop functionm() functionfindmakefile() functionmm() functionmmm() functioncroot() functionpid() functiongdbclient() functionjgrep() functioncgrep() functionresgrep() functiongetprebuilt functiontracedmdump() functionrunhat() functiongetbugreports() functionstartviewserver() functionstopviewserver() functionisviewserverstarted() functionsmoketest() functionruntest() functionruntest_py() functiongodir()2:选择一个target$lunchfull-eng 我们编译后在模拟器中运行,所以选择full 我们选择最大的权限,也就是root后的版本,所以选择eng3:编译源码$make-j4过程大概3小时编译完后在源码目录下会生成out文件夹如图 好了,可以检验以下我们编译的源码是否正常运行了$emulator如果提示找不到命令,请初始化环境$sourcebuild/envsetup.sh $lunchfull-eng ok,android源码顺利完成,明天进行内核的编译