1. 将android源码中下的所有文件,文件夹都加上可执行的权限,因为在编译过程中,你会遇到Permission Denied的错误,这是因为有些可执行文件在运行过程中需要可执行的权限,可是,我怎么知道哪些文件需要什么权限呢,干脆一不做,二不休,我就把android源码目录下的所有文件都加上可执行的权限,那么后续就满血复活啦,只要敲击以下命令即可:
sudo chmod -R 777 *
2. 上面的1问题中所说的相信大家能理解,可是这里,用移动硬盘编译的朋友们可能会遇到一个问题:明明执行了上面的命令,却为什么没有反应呢,ls -l 查询了下,以前怎么样,现在还是怎么样,经过查证,原来是你无法修改移动硬盘的可读可写可执行的权限,更细节的原因本人也不知道,那么这时候我就选择挂载,把盘中的内容挂载到本地,这样,相当于在本地对移动硬盘的源码做了一个映射,就像指针一样,我修改本地就如同修改移动硬盘中的东西一样,然后再执行上述命令,就成功了,到这里,大家应该明白了,我为什么要挂载了吧!
怎么挂载呢?在你的目录的一个可用的位置新建一共目录,比如:mkdir android
然后,df -h 查询你的磁盘的目录,我的磁盘是/dev/sda1
最后,敲入命令:mount -o umask=0000 /dev/sda1 /home/pro/android就可以了,下面你访问android就等于是在访问你的移动硬盘了
3. 好了,终于步入正规了,下面就可以按官网所说的来一步步做吧,
这里是要装JAVA运行环境,但是不能根据他的来,因为他的这个安装jdk7的是对应最新的android源码分支的(android源码5.0版本),我们这里编译的是android4.4.2,所以用的jdk6,如果你不装java运行环境,编译的时候也会报错,你可能这时候会把openjdk-7-jdk改称openjdk-6-jdk,但是我这么做后又遇到了问题,提示说不能用openJDK,需要用oracle官方的jdk6,所以只好去老老实实地去oralce官网下载jdk6了,果然,那样就对了(这里,我不知道这个错大家会不会跟我一样发生,如果有人没有这个错,那么就继续编译吧,没什么问题地);
其实,这里配置Java的时候会有一点小的问题,如果现在不注意这个问题,那么到后面编译的时候一直会出现莫名其妙的错误的。
假如你一开始安装的不是Java1.6,那么这时候你系统默认就不会去找java1.6的东西,即使你把配置好了java1.6的环境变量,所以你要通过以下的方式来配置:
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_45/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_45/bin/javac 1
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_45/bin/javaws 1
$ sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_45/bin/jar 1
$ sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_45/bin/javadoc 1
$ sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.0_45/bin/javap 1 (EDIT - This is needed to compile Kit Kat 4.4)
配置好后再来选择所要用的java1.6的环境:
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config javaws
$ sudo update-alternatives --config jar
$ sudo update-alternatives --config javadoc
$ sudo update-alternatives --config javap (EDIT - This is needed to compile Kit Kat 4.4)
到此为止,java环境算是安装好了4. 安装好JAVA环境后,就需要装一些相应地包,如下图所示,
5.好了,环境地初始化都完成了,下面就正式编译源码,
到这里,剩下地就需要神地等待,过程中不保证会没一点错误,有的话你就赶紧度娘 or google了
如果成功了,最后一步 ,你就可以光荣地启动你的模拟器了,怎么启动,网上的说法各一,一查便是,这里就不说了!!!
sublime text让我伤心。本来很信任sublime text的自动保存功能,之前使用一直很给力的,但这次让我伤心欲绝啊。
关于Linux(ubuntu14.04)上编译Android源码的环境搭建详细过程都是在sublime text中编辑好的,无奈,这次的数据丢失让我不得不重新来回想手打一次了。可能很多细节问题,这次重新编辑文章时不会记得那么清晰了,还请有问题的朋友在下面留言给我就好了。
1.下载并安装jdk6注意,版本一定要是jdk6,其他版本都会有问题。
网上流传的方法大都是apt-get install来安装jdk,实际操作证明这样是不行的,下面给出个下载jdk6的地址
https://jdk6.java.net/download.html 在这里根据自己机器配置情况选择自解压文件(self-extracting)就好了
上面下载得到jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin文件,改变属性使其拥有可执行权限。
./jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin即可安装
2.Linux配置jdk的环境变量
执行命令sudo gedit /etc/environment
在环境变量文件的PATH中追加自己1.中jdk目录的路径注意到bin目录下
例如:/usr/local/java/jdk1.6.0_38/bin
并增加CLASSPATH和JAVA_HOME两个环境变量
例如:
CLASSPATH=.:/usr/local/java/jdk1.6.0_38/lib
JAVA_HOME=/usr/local/java/jdk1.6.0_38
3.更新环境变量使其生效
执行命令:
sudo source /home/yourloginname/.bashrc
4.设置Ubuntu下默认的jdk
因为ubnuntu中有默认安装的openjdk,但我们编译Android源码是需要jdk6的,所以需要设置默认成jdk6
sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_38/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_38/bin/javac 300
update-alternatives --config java
此时选择jdk6即可
5.测试jdk环境变量是否正确配置
java -version
若能看到自己安装的jdk6的版本号则说明jdk环境变量已经配置成功
6.预先要安装的其他软件
说明下,为保证编译过程中不老是缺少某些软件而中断,所以我们一定要做好准备工作,不打任何一场无准备的仗。
网上很多前辈都已经给出来了不少要提前安装好的软件,下面我把它们集中整理出来。
sudo apt-get install build-essential
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libc6-dev
sudo apt-get install patch
sudo apt-get install texinfo
sudo apt-get install libncurses-dev
sudo apt-get install git-core gnupg
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install gperf
sudo apt-get install libsdl-dev
sudo apt-get install libesd0-dev
sudo apt-get install libwxgtk2.6-dev
sudo apt-get install build-essential
sudo apt-get install zip
sudo apt-get install curl
sudo apt-get install ncurses-dev
sudo apt-get install zlib1g-dev
sudo apt-get install valgrind
sudo apt-get install python2.5(该软件我没有安装成功,最后也没出什么问题)
sudo apt-get install libgtk2.0-0:i386
sudo apt-get install libpangox-1.0-0:i386
sudo apt-get install libpangoxft-1.0-0:i386
sudo apt-get install libidn11:i386
sudo apt-get install gstreamer0.10-pulseaudio:i386
sudo apt-get install gstreamer0.10-plugins-base:i386
sudo apt-get install gstreamer0.10-plugins-good:i386
sudo apt-get install gstreamer0.10-ffmpeg:i386(该软件我没有安装成功,最后也没出什么问题)
再加个说明:上面的软件中最后几个以i386是因为一个错误(具体什么错误现在实在记不起来了),错误原因就是需要安装ia32-libs的软件包64位Linux(Ubuntu)上编译Android源码时还需要一个32位Linux的包,所以需要这个ia32-libs的支持包,但这个ia32-libs的软件包在网上根本没有找到,也没发现实际可用的解决方案,但从Ubuntu官网上来看,这个ia32-libs其实就是若干软件包的合集,所以下载安装其中的那么几个软件包就可以达到我们的目的。
7.正式编译Android源码
做了那么多的准备工作,现在终于可以做正事了。根据Android官网的说法,编译Android源码执行下面三个命令即可
①source build/envsetup.sh
②lunch
此时要选择一个编译平台
③make -jn
这里的n注意取值,网上一般说法是CPU核数的两倍,还有一说是CPU核数加1。到底哪个更准确我也没有验证。
但要值得提醒的是,虽然n用一个大的值会使编译速度加快,但如果n取值过大,编译是会报错的。
如果实在不确定n应该用什么值,那就直接用make命令吧。
从编译开始到编译结束,这个时间还是很漫长的,我是在虚拟机上搭建的Ubuntu14.04,分配的内存是2G,直接用的make命令,第一次编译时,是从9:30开始编译,17:00才编译完全结束的。如果机器配置更好些,或用Ubuntu实际机器编译耗时应该会少些。
至此,Linux(ubuntu14.04)上编译Android源码的环境搭建及编译全过程已经结束了。
最后在赠送一个Ubuntu上安装7z软件包的命令及使用方法
安装7z:apt-get install p7zip-full
使用7z:7z x file file是要解压的文件名