笔者依据罗升阳老师的《Android 系统源码情景分析》一书,尝试下载,编译和执行Android源码和内核源码。但可能是软件源“被墙”或版本号更新的原因。期间遇到诸多问题。笔者求助于强大的度娘和谷歌。最终编译成功,现将改动的步骤记录例如以下:




一.下载相关的工具包和依赖包



1.git工具的下载。不多说



2.Java SDK的下载



此处建议下载jdk1.6.0_41



3.其它依赖包的下载



其它依赖包中,libwxgtk2.6-dev的安装会出现故障,将该工具包版本号改为libwxgtk2.8-dev就可以



注意:有一些工具包的下载会出现找不到包的问题,此时能够改变软件源。我是使用的华中科技大学的软件源http:///ubuntu。亲測可用。








二.下载Android源码



可​​以成功下载



1.下载repo



1)创建repo文件夹

mkdir ~/bin 

PATH=~/bin:$PATH



2)下载repo(官方的repo下载不了。其它的repo大多比較旧。这个时比較新的)

git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/

或者​​git clone git:​​​​//git​​​​.omapzoom.org​​​​/git-repo​​​​.git​


3)克隆下来后将git-repo中的repo文件复制到bin文件夹

cp git-repo/repo ~/bin/

4)改动repo文件,设置REPO_URL例如以下:

REPO_URL = 'git://aosp.tuna.tsinghua.edu.cn/android/git-repo'

2.初始化 repo

1)创建Android文件夹,并进入

mkdir Android

cd Android

2)初始化repo

repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-2.3.1_r1


ps:在初始化时,若提示须要email验证,使用例如以下命令后。再又一次上面命令:

git config --global user.email "you@example.com"


git config --global "Your Name"

3)同步repo

repo sync

等待一段时间后(时间较长),Android源码便下载成功了。

此时Android文件夹中文件列表例如以下:

Android源码和内核源码的下载,编译和执行_android




三,编译Android源码

运行make命令。

。。。但这远远不够。会遇到各种问题和报错。。此时借助度娘就可以。


笔者将一些常见的错误截图和解决方式罗列例如以下。希望能够对大家有一些帮助

1.

Android源码和内核源码的下载,编译和执行_android源码_02

解决的方法:sudo apt-get install libc6-dev-i386

Android源码和内核源码的下载,编译和执行_android_03

2.



Android源码和内核源码的下载,编译和执行_软件源_04



Android源码和内核源码的下载,编译和执行_依赖包_05






3.


Android源码和内核源码的下载,编译和执行_android_06



Android源码和内核源码的下载,编译和执行_git_07





4.


Android源码和内核源码的下载,编译和执行_git_08




5.



Android源码和内核源码的下载,编译和执行_android_09



Android源码和内核源码的下载,编译和执行_android_10






6.



Android源码和内核源码的下载,编译和执行_软件源_11



7.



Android源码和内核源码的下载,编译和执行_git_12



Android源码和内核源码的下载,编译和执行_android_13



Android源码和内核源码的下载,编译和执行_软件源_14






8.



Android源码和内核源码的下载,编译和执行_git_15





9.编译成功后。得到一下结果:



Android源码和内核源码的下载,编译和执行_android_16





10.编译sdk


make sdk。这一步也没有什么问题







四.执行Android模拟器



1.配置环境变量



export PATH=$PATH:~/Android/out/host/linux-x86/bin



export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic


2.执行模拟器



emulator命令(也能够指定kernel, system, data和ramdisk。如笔者所看到的。若不指定,则使用默认的)。。但往往会遇到例如以下问题:


Android源码和内核源码的下载,编译和执行_软件源_17



可通过例如以下命令解决:sudo apt-get install libsdl1.2debian:i386。例如以下图所看到的:

Android源码和内核源码的下载,编译和执行_依赖包_18







五.android内核源码的下载

1.新建kernel目录,并进入



mkdir kernel



cd kernel



2.手动运行git命令下载:git clone ​​http:///kernel/goldfish.git​



但会出现故障。提示:remote error: SSL is required。例如以下图所看到的:

Android源码和内核源码的下载,编译和执行_git_19



解决方式:将“http”改动为“https”,例如以下图所看到的就可以:

Android源码和内核源码的下载,编译和执行_git_20



3.git checkout remotes/origin/android-goldfish-2.6.29






六.编译android内核源码

这里依照书上的步骤。应该不会有什么问题。此处略去