android framework源码编译流程

由于工作的需要,需要对Android framework层的源代码就行修改。所以需要下载Android的源代码并进行编译。 

一、安装VM11+Ubuntu14.04操作系统

好了,现在开始今天我的主要内容了。下载Android源代码之前,我们需要一台Linux操作系统,这儿我选择的是:VM11+Ubuntu14.04 
如下所示: 
这里写图片描述
安装VM虚拟机和Ubuntu系统,我相信大家都会了吧!不会的话参考一下这篇文字吧:http://jingyan.baidu.com/article/0320e2c1ef9f6c1b87507bf6.html 
网上有很多关于配置的说法,这儿我只能说,当然你的机器配置越好肯定对后面的编译速度来说越好。硬盘最好分至少200个G,因为源码很大!解压之后更大! 
我主机的配置很渣,主机还是4G的内存,我说了几次电脑太卡,才再给我加了一根4G。哎… 
这里写图片描述

希望以上操作都对你来说都是些渣渣!不然你真的不能进行下面的操作了。

下面就是对Ubuntu虚拟机进行一些常规的配置:

1)、获取Ubuntu的ROOT权限

在Ubuntu下打开终端窗口输入以下命令: 
sudo passwd root 回车 
这里写图片描述 
第一次输入Ubuntu启动密码,也就是安装时候输入的密码。 
第二次输入你要设置的ROOT密码 
第三次输入刚刚设置的ROOT密码 
自此 ROOT密码设置完毕 
这里写图片描述 
验证:输入:su 命令 
之后输入刚刚设置的root密码 
这是用户名前面出现root及表示获取root权限成功

2)、在Ubuntu中安装VMware Tools

首先点击虚拟机菜单中“安装VMware Tools工具”选项 
之后就会在Ubuntu界面上出现VMware Tools的图标,右键打开它出现如下内容: 
这里写图片描述 
如果没有,重启Ubuntu系统。 
将红色框框选中的文件复制到桌面,然后右键选择提取到此处。 
之后打开终端,使用root权限登录。 
这儿我推荐大家使用win下面的一个思想,就是进入到文件夹中直接右键选择“在终端打开”这样既可直接进入到该目录下 
如图: 
这里写图片描述 
之后获取root权限。 
详细操作如下: 
这里写图片描述 
输入yes既可,之后一路回车 
出现如下界面,及表示安装成功。重启Ubuntu既可。从主机向虚拟机中复制小文件。

3)、在Ubuntu中使用共享目录

我现在安装的Ubuntu系统版本为14.04,之前我安装了15.04但是不知道是因为15.04有BUG还是什么,一直看不到共享文件,由于时间问题,我也没有仔细深入去研究了,所以重新安装了14.04系统。 
如何设置共享文件夹呢? 
如下图: 
这里写图片描述 
记住选择总是启用。 
这时候,我们在Ubuntu终端输入:cd /mnt/hgfs 命令即可。 
最后输入:ls 命令,就可以看到你共享的目录文件信息。 
自此共享成功。

4 )、在Ubuntu中安装JDK 
a.在Windows系统下下载Liunx 版本JDK,我下的是jdk-6u45-linux-x64.bin 
b.复制到Ubuntu中 
c.手动安装JDK(我安装到了/usr/local/java/jdk1.6.0_45下): 
先修改权限 sudo chmod u+x jdk-6u43-linux-i586.bin 
安装 sudo -s ./ jdk-6u45-linux-x64.bin 
d.配置环境变量 
打开profile文件 sudo nano /etc/profile 
在文件最下面加入 
export JAVA_HOME=/usr/local/bin/jdk1.6.0_45 
export CLASSPATH=”.:JAVAHOME/lib:CLASSPATH” 
export PATH=”JAVAHOME/:PATH” 
e.手动设置系统默认JDK 
在终端依次输入命令: 
sudo update-alternatives –install /usr/bin/java java /usr/local/java/jdk1.6.0_45/bin/java 300 
sudo update-alternatives –install /usr/bin/javac javac /usr/local/ java/jdk1.6.0_45/bin/javac 300 
sudo update-alternatives –install /usr/bin/jar jar /usr/local/ java/jdk1.6.0_45/bin/jar 300 
sudo update-alternatives –install /usr/bin/javah javah /usr/local/ java/jdk1.6.0_45/bin/javah 300 
sudo update-alternatives –install /usr/bin/javap javap /usr/local/ java/jdk1.6.0_45/bin/javap 300 
然后执行以下代码选择我们安装的JDK版本: 
sudo update-alternatives –config java 
f.验证JDK是否安装成功。重启Shell终端,执行“java -version”,若输入以下命令,则说明安装成功: 
java version “1.6.0_45” 
Java(TM) SE Runtime Environment (build 1.6.0_45-b01) 
Java HotSpot(TM) Client VM (build 20.14-b01, mixed mode, sharing)

二、下载Android5.1.1的源代码

如果在上面的操作,你都成功了的话,那恭喜你可以进行下面的操作了。下载Android源代码有些步骤可能需要一些FQ的处理,当然如何翻,这个你就自己看着办了 
为了照顾很多不会FQ或者像我一样来自大山里面的孩子(穷人家的孩子),这儿我提供一个后面需要用到的:repo文件,下载地址:http://download.csdn.net/detail/poison_h/9467693

重头戏开始了,一定要有耐心,这特么的不是什么技术活,真正的是一个耐心活! 
a、第一步打开终端,输入:sudo apt-get update 
b、输入:sudo apt-get install git 这一步是安装git工具 
c、然后你需要用install命令将下面全部安装到你电脑上(32bit或者64bit都要安装这些): 
sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev

d、除上述之外,对于64位系统,你需要额外安装这些: 
sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

上诉c、d两步安装的时间可能很长,耐心等待吧,这也取决于你的网速! 
e、创建目录: 
mkdir -p ~/bin 
mkdir -p ~/android/system

f、下载repo: curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo 
如果你没有FQ工具,你就用我上面提供的吧。直接将repo 放到bin目录里面。然后跳过这步。

g、权限添加:chmod a+x ~/bin/repo 
h、设置环境变量:使用root权限,然后输入:vi ~/.profile 
将以下添加到里面: 
set PATH so it includes user’s private bin if it exists 
if [ -d “HOME/bin];thenPATH=HOME/bin:$PATH” 
Fi 
然后输入:”:q”退出

i、然后初始化以下repo: repo init -u https://github.com/CyanogenMod/android.git -b cm-12.1 
后面的cm-12.1即对应Android5.1.1的源码。这儿你可以下载你喜欢版本的源码。反正你高兴就好

j、真正的下载源码:repo sync 这一步完全就是拼网速了,网速不好可能就是一周,因为那个人就是我! 
如果你电脑配置好,内存给得多,网速又快。可以使用:-j 4。即开四个线程下载。后面数字随意,你高兴就好! 
如果中途报错,自己将错误百度或者google一下,解决了之后再执行一下:repo sync即可。反正我没有遇到。

三、编译Android源代码

希望上面你都能一帆风顺,如果你成功的度过了上面的劫,那么下你还得继续度一个。哈哈。要有耐心哦!

打开终端,输入以下命令: 
a、cd ~/android/system/vendor/cm 
b、./get-prebuilts 
c、使其生效:source build/envsetup.sh 
d、下载目标手机的device和kernel源码:breakfast kltechnduo 
这一步我要说明一下,由于我是下载CM的Android源码,编译目标机器是三星S5,而三星S5在CM里面的代号是kltechnduo, 
所以执行:breakfast kltechnduo命令。 
e、这一步需要你将手机连接到电脑,至于如何连接,你百度或者google一下吧,很简单的,不要嫌麻烦就行, 
因为这一步需要抽取一些你手机里面的东西:./extract-files.sh 
f、croot 
g、这一步就开始编译源代码了,这下就取决于你电脑的配置了:brunch kltechnduo

如果以上步骤有报错,百度或google解决一下就行了。当你修改了代码之后,只需要执行:a、b、c、f、g步骤即可!

自此,你就已经成功的学会了如何编译ROM了,是时候装一波B了。如果有什么疑问或者错误,欢迎留言讨论! 
如果你觉得帮助了你,请点个赞。谢谢各位大哥大姐大叔大婶了!

原文地址:https://www.cnblogs.com/vegetate/p/9997326.html