ubuntu 14.04.5 编译Android 4.4.4 r1源码(最新)

2017-01-14 19:51:57来源:CSDN作者:QQ1084283172人点击

本文博客链接:http://blog.csdn.net/qq1084283172/article/details/54426189

吐槽:ubuntu系统真是让人又爱又恨,也有可能是VMware Workstation Pro虚拟机的原因;同一个版本的ubuntu系统在Oracle VM VirtualBox上安装很顺利没有多大的问题,但是在VMware Workstation Pro虚拟机上安装,就会出现各种奇葩的问题,为了配置一个自己用的顺手的ubuntu环境真是折腾死人,来来回回不下10次,而且还发现一个问题,按照别人的博客教程,同一个步骤,自己就是不能操作成功,总会出现这样那样的问题,有些作者的博客吧,自己也不实践一下网上照抄过来的,后来实践发现很多教程都是错的甚至是误导人的,只有极少数人是经过实践并分析出原因给出的解决方法。下面就记录一下,基于ubuntu 14.04.5(x64bit) 编译Android 4.4.4 r1源码遇到的坑以及解决的办法。


一、JDK安装

编译Android4.x的源码是不能用OpenJDK,需要用Oracle JDK 1.6,Oracle JDK 1.7目前是不支持的;编译Android 5.x版本以后的源码不再能使用Oracle JDK,需要使用OpenJDK 7版本。从下载页http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR,下载Linux x64bit版本Oracle JDK 1.60_45.



将从官网下载的 jdk-6u45-linux-x64.bin 拷贝ubuntu  14.04.5系统的 /home/androidcode/AndroidDevlop 路径下,执行解压:

cd /home/androidcode/AndroidDevlopsudo chmod u+x jdk-6u45-linux-x64.binsudo ./jdk-6u45-linux-x64.bin


添加Oracle JDK 1.60_45的路径到ubuntu系统的环境变量中:

sudo gedit /etc/profile
先打开全局环境变量添加文件 /etc/profile,将jdk 1.60_45相关的环境变量添加到文件 /etc/profile的末尾,然后保存/etc/profile文件,关闭 gedit程序

# 添加java环境变量export JAVA_HOME=/home/androidcode/AndroidDevlop/jdk1.6.0_45export JRE_HOME=${JAVA_HOME}/jreexport PATH=$PATH:${JAVA_HOME}/binexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
使用source更新下.profile文件:

source /etc/profile
执行命令 java -version 看下jdk 1.60_45是否安装成功:

java -version


设置ubuntu系统默认jdk的扩展操作命令:

// 为Oracle jdk创建/usr/bin的符号链接(数字300 表示优先级)sudo update-alternatives --install /usr/bin/java java /home/androidcode/AndroidDevlop/jdk1.6.0_45/bin/java 300  sudo update-alternatives --install /usr/bin/javac javac /home/androidcode/AndroidDevlop/jdk1.6.0_45/bin/javac 300  // 后面两项可以不配置  sudo update-alternatives --install /usr/bin/javah javah /home/androidcode/AndroidDevlop/jdk1.6.0_45/bin/javah 300  sudo update-alternatives --install /usr/bin/jar jar /home/androidcode/AndroidDevlop/jdk1.6.0_45/bin/jar 300  // jdk默认版本切换命令  sudo update-alternatives --config javasudo update-alternatives --config javac// 设置系统默认的JDK/JREsudo update-alternatives --set java /usr/bin/java java /home/androidcode/AndroidDevlop/jdk1.6.0_45/bin/javasudo update-alternatives --set javac /usr/bin/javac javac /home/androidcode/AndroidDevlop/jdk1.6.0_45/bin/javac


update-alternatives命令的使用说明

1.功能作用update-alternatives是dpkg的实用工具,用来维护系统命令的符号链接,以决定系统默认使用什么命令。在Debian系统中,我们可能会同时安装有很多功能类似的程序和可选配置,如Web浏览器程序(firefox,konqueror)、窗口管理器(wmaker、metacity)和鼠标的不同主题等。这样,用户在使用系统时就可进行选择,以满足自已的需求。但对于普通用户来说,在这些程序间进行选择配置会较困难。update-alternatives工具就是为了解决这个问题,帮助用户能方便地选择自已喜欢程序和配置系统功能2.位置/usr/bin/update-alternatives3.格式用法update-alternatives [<选项> ...] <命令>4.主要参数Commands:  --install <link> <name> <path> <priority>    [--slave <link> <name> <path>] ...                           在系统中加入一组替换项.  --remove <name> <path>   从 <名称> 替换组中去除 <路径> 项.  --remove-all <name>      从替换系统中删除 <名称> 替换组.  --auto <name>            将 <名称> 的主链接切换到自动模式.  --display <name>         显示关于 <名称> 替换组的信息.  --query <name>           machine parseable version of --display <name>.  --list <name>            列出 <名称> 替换组中所有的可用替换项.  --get-selections         list master alternative names and their status.  --set-selections         read alternative status from standard input.  --config <name>          列出 <名称> 替换组中的可选项,并就使用其中哪一个,征询用户的意见.  --set <name> <path>      将 <路径> 设置为 <名称> 的替换项.  --all                    对所有可选项一一调用 --config 命令.<link> 是指向 /etc/alternatives/<名称> 的符号链接>.(e.g. /usr/bin/pager)<name> 是该链接替换组的主控名.(e.g. pager)<path> 是替换项目标文件的位置.(e.g. /usr/bin/less)<priority> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高.Options:  --altdir <directory>     指定不同的可选项目录.  --admindir <directory>   指定不同的管理目录.  --log <file>             设置log文件.  --force                  allow replacing files with alternative links.  --skip-auto              skip prompt for alternatives correctly configured in automatic mode (relevant for --config only)  --verbose                详尽的操作进行信息,更多的输出.  --quiet                  安静模式,输出尽可能少的信息.  --help                   显示本帮助信息.  --version                显示版本信息.  5.应用实例1、列出可用的候选命令update-alternatives --list java2、显示和修改实际指向的候选命令,sudo update-alternatives --config java3、配置系统上所有的候选命令sudo update-alternatives --all4、显示一个命令链接的所有可选命令update-alternatives --display editor5、将 <名称> 的主链接切换到自动模式sudo update-alternatives --auto editor6、在系统中加入一组替换项sudo update-alternatives --install x-cursor-theme x-cursor-theme /etc/X11/cursors/Gold.theme 70

感谢链接:

https://my.oschina.net/stevenleesmart/blog/159356

http://www.lampblog.net/ubuntu/update-alternatives%E5%91%BD%E4%BB%A4/

http://www.tuicool.com/articles/NBBbmia


二、安装编译依赖的软件

关于编译Android源码需要的依赖库文件和需要的环境条件具体的可以参考google官网的文档https://source.android.com/source/requirements.html。下面的命令是google官网给出的,编译Android 4.4.4 r1源码需要安装的依赖库文件:

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


在uhuntu的命令行终端执行上面命令,很遗憾,出现下面的错误:

The following packages have unmet dependencies: unity-control-center : Depends: libcheese-gtk23 (>= 3.4.0) but it is not going to be installed                        Depends: libcheese7 (>= 3.0.1) but it is not going to be installedE: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.


博文http://blog.csdn.net/dev_linux/article/details/45276403的作者给出的解决方法给了我启发,后来我发现在命令行终端执行 sudo apt-get install  libcheese-gtk23 libcheese7 命令,提示 libcheese-gtk23 libcheese7已经存在了,只是版本和这里安装需要的版本不符,执行下面的命令就可以解决。但是也有风险,很可能导致ubuntu系统不能进入图形界面因为一些系统的程序文件也被卸载移除了,需要在命令行进行ubuntu图形界面的修复,具体的参考:http://blog.csdn.net/qq1084283172/article/details/54421090。

sudo apt-get autoremove	libcheese-gtk23 libcheese7sudo apt-get install  libcheese-gtk23 libcheese7或者sudo apt-get remove  libcheese-gtk23 libcheese7sudo apt-get install  libcheese-gtk23 libcheese7


再次执行前面安装编译依赖库命令,再次出现下面的错误:
The following packages have unmet dependencies: build-essential : Depends: g++ (>= 4:4.4.3) but it is not going to be installed g++-multilib : Depends: gcc-multilib (>= 4:4.8.2-1ubuntu6) but it is not going to be installed                Depends: g++ (>= 4:4.8.2-1ubuntu6) but it is not going to be installed                Depends: g++-4.8-multilib (>= 4.8.2-5~) but it is not going to be installedE: Unable to correct problems, you have held broken packages.


经过网络查询发现是依赖库安装源地址旧了的缘故,需要添加下载源地址然后更新安装源地址,具体的可以参考网址:http://askubuntu.com/questions/685669/install-g-ubuntu-14-04-depends-g-4-8-4-8-2-5-but-it-is-not-going-to-b给出的解决方法:



1.执行下面的命令备份原来的安装源sources.list

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
2.执行 lsb_release -a 命令查看当前ubuntu系统的release版本号

lsb_release -a

3.通过上面获取到的ubuntu系统的发布号 14.04 拼接成下面的url地址,登陆下面这个url地址,查看该版本的ubuntu有效的安装源地址:

http://wiki.ubuntu.org.cn/Template:14.04source

4.执行 sudo gedit  /etc/apt/sources.list 命令,打开 /etc/apt/sources.list文件,将下面的安装源地址添加到/etc/apt/sources.list文件的末尾,然后保存文件,关闭gedit

sudo gedit  /etc/apt/sources.listdeb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiversedeb http://cn.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiversedeb http://cn.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiversedeb http://cn.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse##测试版源deb http://cn.archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse# 源码deb-src http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiversedeb-src http://cn.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiversedeb-src http://cn.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiversedeb-src http://cn.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse##测试版源deb-src http://cn.archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse# Canonical 合作伙伴和附加deb http://archive.canonical.com/ubuntu/ trusty partnerdeb http://extras.ubuntu.com/ubuntu/ trusty main
5.更新安装源地址,使其生效:

sudo apt-get update
6.安装 g++和g++-multilib

sudo apt-get install g++sudo apt-get install g++-multilib

再次执行安装依赖库文件的命令,就能执行成功了:

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 


三、编译Android 4.4.4 r1的源码

1)初始化编译环境

. build/envsetup.sh  或  source build/envsetup.sh



2)选择编译目标版本

lunch的方式有很多中,可以使用lunch命令查看,我使用最常用的

lunch 9   



3)编译

1.make后面可以更参数:如你的机器时双核,每核双线程的话,使用make -j4,这样速度更快,但编译时使用的内存也更多
2.make失败或停止后,可以使用make -k 继续编译

make -j16 


四、后记

前面由于执行sudo apt-get remove  libcheese-gtk23 libcheese7可能导致重启ubuntu系统不能进入图形界面的情况,因此需要执行下面的操作进行修复:

1、进入了命令行界面,输完用户名和密码2、重装gdm,sudo apt-get install gdm3、设置启动界面的风格:dpkg -reconfigure gdm4、重启reboot可登录。
ubuntu登陆界面修复成功以后,进入ubuntu系统,打开命令行终端,执行下面的操作,恢复ubuntu最初的登陆界面:

sudo apt-get install  lightdmdpkg -reconfigure lightdm
基于前面的原因ubuntu系统的system setting中的图标可能会消失,需要修复,执行下面的命令:

sudo apt-get install unity-control-center
感谢连接:

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

http://www.linuxidc.com/Linux/2016-04/130698.htm

http://www.cnblogs.com/bozhicheng/p/5769221.html

http://blog.csdn.net/chouretang/article/details/43769839

http://wenda.so.com/q/1455520897722099?src=110


五、Ubuntu虚拟机系统VMware Tools的安装(顺便记录一下)

1.通过VMware Workstation Pro虚拟机的菜单栏虚拟机(M)---> 安装VMware Tools(T) ,点击安装VMware Tools虚拟机增强工具,此时在ubuntu studio 16.04.1 64bit系统的桌面,会生成一个 VMware Tools的图标,点击进去会发现VMware Tools的安装包 VMwareTools-10.0.0-2977863.tar.gz  如下图,将其拷贝一份到ubuntu studio 16.04.1 64bit系统的桌面上。

 


2.打开终端对 VMwareTools-10.0.0-2977863.tar.gz 进行解压

命令:

tar -xzvf  VMwareTools-10.0.0-2977863.tar.gz



3.进入 VMwareTools-10.0.0-2977863.tar.gz解压后的文件目录vmware-tools-distrib,su权限执行./vmware-install.pl ,按照 VMwareTools的安装提示一路回车直到 VMwareTools安装完成,然后reboot重启系统。

命令:

 cd  vmware-tools-distrib
 sudo ./vmware-install.pl

reboot


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台