您的位置:首页 > 移动开发 > Android开发

android 4.0.3最新源码下载编译

2012-05-06 02:31 369 查看
最新的android4.0源代码公布以后,相信很多人和我一样都跃跃欲试,其实4.0的代码下载和编译和以前的版本差不多,但是有一些小的差别,写下来供不明真相的新手来参考

首先,开发环境,google建议在ubuntu10.0.4下,并且最好是64位,既然是为了工作和学习,就尽量按照官方要求的来吧。

Python2.5--2.7ubuntu10.0.4已经默认安装了,所以不需要安装,其他环境需要安装

JDK6编译4.0需要jdk6,sdk的编译需要jdk5

Git1.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:

$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.sh

souce命令执行的是源码包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后的版本,所以选择eng

3:编译源码

$make-j4

过程大概3小时

编译完后在源码目录下会生成out文件夹如图




好了,可以检验以下我们编译的源码是否正常运行了

$emulator

如果提示找不到命令,请初始化环境

$sourcebuild/envsetup.sh
$lunchfull-eng





ok,android源码顺利完成,明天进行内核的编译
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: