编译安卓源码

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:总结以及后续

断断续续花了差不多一个星期才搞定,挺烦搭环境的,不过遇见问题又不能不解决,好在终于完成了。后续的话再编译源码就不会这么浪费时间了。花个时间写个小总结,给以后想要编译安卓源码的少踩点坑吧。还有就是搭环境的时候尽可能多找几篇帖子看看,各种问题先有点了解,解决起来会快很多。

0x04:参考

http://blog.csdn.net/qq1084283172/article/details/54426189

猜你喜欢

转载自blog.csdn.net/u014715599/article/details/81221013