1. 安装ubuntu,我安装的是ubuntu9.10
2. 安装JDK 5.0
1:根据官方文档里所说,源代码的编译必须使用JDK5才能编译的了,所以这里我们使用jdk5
2: 需要先更新源,在终端里执行 sudo gedit /etc/apt/sources.list
3: 在弹出的文档里最后加入如下指令:
把以下2行拷贝到文档最后面:
deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
保存退出。
4: 执行 sudo apt-get update 更新源.
5: 配置编译环境并下载JDK5
在终端中执行
sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
碰到确认的按Y后按下回车继续
6: 等待安装完毕
3. 下载anroid源代码后,并解压(下载源代码的方法有很多,这里就不多说了.)
4. 编译源代码
从终端进入解压好的源代码目录下
编译前需要修改源代码中的一些代码,不然会编译不过去
改文件
development/emulator/qtools/trace_reader.cpp
1012
const char *end = rindex(mmap_path, '@');
1015
const char *start = rindex(mmap_path, '/');
development/emulator/qtools/dmtrace.cpp
166
char *paren =(char *) strchr(name, '(');
183
char *dot =(char *) strrchr(name, '.');
输入make -j 8 编译源代码.需要等很长很长时间(-j 8表示用8个CPU来编译,前提你是8个CPU)。
5. 配置环境:gedit .bashrc
将一下2行添加到文件末尾:
export PATH=$PATH:/home/xxx/android/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=/home/xxx/android/out/target/product/generic
6. 编译模块:
修改了android的相关源代码后,在源代码的目录下,执行: . build/envsetup.sh
然后,进入到修改的源代码所属包的目录下,执行:mm
在源代码的目录下,执行: make snod
最后,在系统目录下,执行:emulator ,就可以在模拟器上看到修改后的结果。
android中的一个应用程序可以单独编译,编译后要重新生成system.img
在源码目录下执行
$ . build/envsetup.sh (.后面有空格)
就多出一些命令:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
可以加—help查看用法
我们可以使用mmm来编译指定目录的模块,如编译联系人:
$ mmm packages/apps/Contacts/
编完之后生成两个文件:
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/Contacts.apk
可以使用
$ make snod
重新生成system.img,再运行模拟器
最后,在系统目录下,执行:emulator ,就可以在模拟器上看到修改后的结果。