最近需要看android源代码,记录一下自己的学习过程。
一.下载源代码
这里分两种方法:1.从本地下载(前提是本地有源代码镜像)2.从网上下载。
1.本地下载
创建一个文件夹bin:$ mkdir ~/android
$ PATH=~/android:$PATH
下载和安装repo:$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/android/repo
$ chmod a+x ~/android/repo
安装好repo工具后,进入到bin目录中执行repo命令来下载android源代码了。
$cd android
~/android$ repo init -u /home/cr/mirror/mirror/platform/manifest.git -b android-5.1.0_r1
(/home/cr/mirror/mirror/platform/manifest.git是我的源代码镜像的本地地址,-b后边是需要下载的源代码的版本号)
~/android$ repo sync
下载过程可能会碰到中断现象,重复执行repo sync命令就可以继续下载了。
2.从网上下载
创建一个文件夹android:$ mkdir ~/android
$ PATH=~/android:$PATH
下载和安装repo:$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/android/repo
$ chmod a+x ~/android/repo
安装好repo工具后,进入到bin目录中执行repo命令来下载android源代码了。
$cd android
~/android$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.0_r1
(https://android.googlesource.com/platform/manifest是android源代码地址,-b后边是需要下载的源代码的版本号)
~/android$ repo sync
下载过程可能会比较漫长,这取决于网速,期间还可能会碰到中断现象,重复执行repo sync命令就可以继续下载了。
二.编译android源代码编译之前应该装好相应版本的jdk。这里介绍两种方法:
1.下载jdk压缩包,自行安装(这里以.tar.gz 64位版本为例)
jdk1.7地址如下:
http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html
1.1选择要安装java的位置,如/usr/目录下,新建文件夹java(mkdir java)
将文件jdk-7u79-linux-x64.tar.gz移动到/usr/java
解压:tar -zxvf jdk-7u79-linux-x64.tar.gz
删除jdk-7u79-linux-x64.tar.gz(为了节省空间)
至此,jkd安装完毕,下面配置环境变量
1.2打开/etc/profile(vim /etc/profile)
在最后面添加如下内容:
JAVA_HOME=/usr/java/jdk1.7.0_79
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
1.3source /etc/profile
1.4验证是否安装成功:java -version
2.直接用命令安装
2.1$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
2.2如果安装了好几个版本的jdk,可以通过以下命令查看,并切换:
$ sudo update-alternatives --config java
2.3$java -version 查看当前jdk版本。
接下来就可以开始编译了:
~/android$ source build/envsetup.sh
要编译android源代码,只需要在android源代码目录下执行make命令就可以了。
~/android$ make
第一次编译可能会花费比较长的时间,而且会遇到许多问题,网上搜索都能得到解决。
三.运行android模拟器
我这里使用android模拟器emulator来运行编译出来的android源代码。执行一下命令:
~/android$ export PATH=$PATH:~/android/out/host/linux-x86/bin
~/android$ emulator -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7 -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img
如果运行不成功可以不要-ramdisk ramdisk.img
四.将android源代码导入到Intellij(参考:http://jeffreylyg.github.io/blog/2014/12/27/intellij-ideadao-ru-androidyuan-ma-gong-cheng-aosp/)
1. 执行如下命令生成idegen.jar文件
~/android$mmm developent/tools/idegen/
2. 按如下命令执行idegen.sh脚本
~/android$development/tools/idegen/idegen.sh
这条命令执行完成后就在Android源码的根目录中生成了android.iml, android.ipr两个文件。
3. 用IntelliJ IDEA直接打开android.ipr这个文件
这时IntelliJ IDEA就会扫描整个目录并去建立索引了,这个过程是相当耗时间的,大概得一个小时左右,根据电脑的配置决定,所以为了能最大程度地缩短这个时间,在这之前我们有一些准备工作要做:增加IntelliJ IDEA所占的内存。
在”IDEA_HOME/bin/idea.vmoptions64”中改变”“-Xms -Xmx”的值,如果是32位系统就修改vmoptions。
接下来就可以阅读源代码了。