0x01:环境搭建
环境:Ubuntu 14.04
android 源码:[android4.4.4 r1](https://pan.baidu.com/s/1miqu7ji),也可以自己去其他地方下载
JDK版本:[Oracle JDK 1.6](https://pan.baidu.com/s/1o83NCEm),这个官网也可以下载,具体下载方式见参考链接博客里。
1.搭建编译环境
将从官网下载的 jdk-6u45-linux-x64.bin 拷贝ubuntu 14.04.5系统的 /home/xxx/xxx/ 路径下,执行解压:
cd /home/xxx/xxx
sudo chmod u+x jdk-6u45-linux-x64.bin
sudo ./jdk-6u45-linux-x64.bin
添加Oracle JDK 1.60_45的路径到ubuntu系统的环境变量中:
sudo gedit /etc/profile || sudo gedit ~/.bashrc
先打开全局环境变量添加文件 /etc/profile(或者bashrc),将jdk 1.60_45相关的环境变量添加到文件 /etc/profile(或者bashrc)的末尾,然后保存/etc/profile(或者bashrc)文件,关闭 gedit程序:
# 添加java环境变量
export JAVA_HOME=/home/xxx/xxx/jdk1.6.0_45
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
使用source更新下.profile文件:
source /etc/profile || source ~/.bashrc
执行命令 java -version 看下jdk 1.60_45是否安装成功:
java -version
设置ubuntu系统默认jdk的扩展操作命令:
// 为Oracle jdk创建/usr/bin的符号链接(数字300 表示优先级)
sudo update-alternatives --install /usr/bin/java java /home/xxx/xxx/jdk1.6.0_45/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /home/xxx/xxx/jdk1.6.0_45/bin/javac 300
// 后面两项可以不配置
sudo update-alternatives --install /usr/bin/javah javah /home/xxx/xxx/jdk1.6.0_45/bin/javah 300
sudo update-alternatives --install /usr/bin/jar jar /home/xxx/xxx/jdk1.6.0_45/bin/jar 300
// jdk默认版本切换命令
sudo update-alternatives --config java
sudo update-alternatives --config javac
// 设置系统默认的JDK/JRE
sudo update-alternatives --set java /usr/bin/java java /home/xxx/xxx/jdk1.6.0_45/bin/java
sudo update-alternatives --set javac /usr/bin/javac javac /home/xxx/xxx/jdk1.6.0_45/bin/javac
安装编译依赖文件
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
如果安装不通过需要执行下面命令
sudo apt-get remove libcheese-gtk23 libcheese7
sudo apt-get install libcheese-gtk23 libcheese7
然后就可以编译了,如果出现其他错误,可以先在参考链接里找一下解决方式。
0x03:编译安卓源码
1.初始化编译环境
. build/envsetup.sh 或 source build/envsetup.sh
2.选择编译目标版本
直接执行 lunch 会列出14个编译版本选项
这里我需要arm下的,遂选择了lunch 1
3.编译
make -k(make失败后继续编译,我直接用的这个,大概编译两三个小时)
make -jn(n是编译时选择多个核编译)
0x02: 编译过程中踩的坑
python版本问题
我这边装了pyenv多版本管理的,设置的python版本为3.4.3的,然后除了pyenv,系统里也装了一个3.4.3的版本,然后android4.4.4里的py脚本都是python2的脚本,导致某些语法冲突,所以可以想办法设置默认python版本2.7的。或者先把python3卸了,但是有风险,ubuntu更新之后好多依赖python3的,卸载会很坑。
虚拟机不能解压官方Oracle JDK 1.6
这个问题一开始我以为是安装包有问题,重新下了再试也还是不行,重新装了虚拟机也不行,最后直接在真机里解压就没事了。坑了我好久。
ubuntu 重启之后界面出了问题
这个问题,一开始没有认真看博客,所以纠结了好久才解决,最后解决方法跟博客里的差不多。
进入命令行界面
> 进入了命令行界面,输完用户名和密码
> 重装gdm,sudo apt-get install gdm
> 设置启动界面的风格:dpkg -reconfigure gdm
> 重启reboot可登录。
登陆后,进入终端恢复ubuntu最初登录界面
> sudo apt-get install lightdm
> dpkg -reconfigure lightdm
基于前面的原因ubuntu系统的system setting中的图标可能会消失,需要修复,执行下面的命令:
> sudo apt-get install unity-control-center
0x03:总结以及后续
断断续续花了差不多一个星期才搞定,挺烦搭环境的,不过遇见问题又不能不解决,好在终于完成了。后续的话再编译源码就不会这么浪费时间了。花个时间写个小总结,给以后想要编译安卓源码的少踩点坑吧。还有就是搭环境的时候尽可能多找几篇帖子看看,各种问题先有点了解,解决起来会快很多。