下面的文字都是经过本人亲自实现通过的总结,愿与大家分享,希望对大家有所帮助!
一、下载、安装vmware虚拟机和ubuntu系统
1、目前,Android源代码的工作环境只能在linux系统上进行,这里推荐使用ubuntu系统。因为该系统是一个广受称道的linux发行版本,它具有强大的软件包管理系统,并且简单易用,它的官方下载地址为:http://www.ubuntu.com ;另外,虽然Android源代码的工作环境要求ubuntu系统的版本在8.04以上,但是我这里还是建议下载安装最新的版本,当然,我用的是当时最新的版本12.10 LTS。
2、如果习惯使用windows系统的开发者,可以先考虑安装个虚拟机,然后在虚拟机上安装ubuntu系统即可,虚拟机这里推荐使用vmware虚拟机,它的官方下载地址为:http://www.vmware.com;当然,用户也可以在网上寻找一些破解版的哦!;另外,安装vmware最好用6.0以上版本,因为较旧的版本在网络连接上不是很快,建议使用最新的版本。
由于vmware虚拟机和ubuntu系统的安装步骤较简单,只需按照步骤进行即可。
最后,要注意的就是在创建虚拟机的时候,要保证有足够的内存和硬盘空间大小;建议内存在2G以上,而硬盘空间在30G以上,因为编译Android源代码时,至少需要这个大小的空间的。
二、下载、编译和运行Android源代码
在上面的工作完成之后,我们还需要安装一些工具和依赖资源包,然后才能正常的下载、编译和运行Android源代码。这些工具和依赖包包括Git和Java sdk等。另外,在我们四处寻找命令行的时候,我们可以使用快捷键来快速地在图形界面和命令行之间进行切换,快捷键为ctrl+alt+F1(图形界面到命令行)和ctrl+alt+F7(命令行到图形界面)。
1、Git工具的安装
Android系统的源代码使用Git工具来管理的,它是一种分布式的源代码管理工具,可以高效、高速的将项目源代码进行版本管理,它的安装方法为:
~$:sudo apt-get install git-core gnupg
2、JDK安装
我们编译和运行Android源代码的时候,需要Java sdk,它的安装方法如下:
鉴于我使用的ubuntu的版本为12.10LTS,所以的方法会有所不同,其他的版本如果按照我的做法行不通的话,可以百度一下,一般都会找到答案的;当然,这个方法是正常跑通的,方法如下。
我在安装JDK时,是手动安装的(推荐),即是到http://www.oracle.com下载jdk1.6.0_38到本地,然后手动安装JDK;最后,设置环境变量:比如我的JDK的安装路径是在/opt/下,那么就是sudo vi /etc/profile在PATH最后的位置加上
Export JAVA_HOME=/opt/jdk1.6.0_38
Export PATH=$JAVA_HOME/bin:$PATH
Export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
当然,还可以在/etc/environment或/etc/bash_profile中添加。
第二种方法,有时因为下载源的问题而安装失败,建议手动安装。添加下载资源:
~$:sudo add-apt-repository “deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse”
~$:sudo add-apt-repository “deb http://us.archive.ubuntu.com/ubuntu/ hard-updates multiverse”
更新包索引:
~$:sudo apt-get update
安装jdk:
~$:sudo add-apt install sun-java6-jdk
检查当前所安装的Java版本:
~$:sudo update-java-alternatives -l
若系统存在多个Java版本,转为Java1.6:
~$:sudo update-java-alternatives -s java-1.6.0-sun
确认Java版本:
~$:java -version
正常的话,会在下面显示当前所安装的Java版本信息。
3、安装其他依赖包
编译android源代码的时候,需要其他的工具包,他们的安装如下:
~$:sudo apt-get install valgrind flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev(可选) build-essential zip curl lib32ncurses5-dev zlib1g-dev
4、下载android源代码
终于到了下载源代码了,期待许久了吧!那么开始了。
为了方便下载android源代码,Google提供了一个repo工具,这个工具实际上是一个脚本文件,里面封装了用来下载代码的git命令,它的下载和安装方法如下:
~$:cd ~
~$:mkdir bin
~$:export PATH=$PATH:~/bin
~$:curl http://git-repo.googlecode.com/files/repo-1.12 > ~/bin/repo
~$Lchmod a+x ~/bin/repo
安装了repo工具之后,我们就可以开始下载源代码了。
步骤如下:
~$:mkdir Android
~$:cd Android
~$:repo init -u https://android.googlesource.com/platform/manifest //下载所有分支(不推荐,因为很大的,我们只需抽取核心部分即可,如:2.3版本)
那么改为下载android-2.3.4版本:
~$:repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.4_r1
~$:repo sync
哎!剩下的就是等待了,等待是一种对你的考验哦!这个过程可能需要几个小时吧!要看网速的好坏的;在下载过程中,可能由于网速或其他原因导致中断,这时继续执行命令repo sync即可。
5、编译android源代码
在编译源代码的时候,我们cd到Android目录(如未说明的话,下面的路径都是在Android目录中进行)中,执行make命令开始编译。
编译过程中,可能因为某些原因而中断,如网络或缺少资源包等;此时,我们利用命令窗上的相关提示信息,打开搜索引擎一般都会查到解决办法的,这里就不一一说明了。最后,我们就可以进行真正的源代码打包编译了,那么执行命令:make sdk即可。编译成功后,会在命令窗中显示信息:
Package SDK:out/host/linux-x86/sdk/android-sdk_eng.$USER$_linux-x86.zip其中的$USER$表示为用户名,有了这个SDK后,我们就可以在IDE环境中开发Android应用程序了。
6、运行Android模拟器
源代码编译成功后,我们欣然的接受了喜悦的心情,开始运行模拟器了。为了方便起见,我们可以使用Android模拟器emulator来运行编译的Android源代码。执行下面的命令来启动Android模拟器:
Export PATH=$PATH:~/Android/out/host//linux-x86/bin
Export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic
上面的两个export也可以添加到环境变量中,方便关机重启后失效;可以加入到/etc/environment 或/etc/profile中,类似于JDK的配置。
最后,执行命令:emulator来启动模拟器,如果提示错误信息:SDL init failuer:no available video device的话,我们可以执行命令export DISPLAY=:0即可,当然,这个命令也可以加入到上面的profile脚本文件中。
运行成功后,如下图显示(需要切换到图像界面才能看到):
三、下载、编译和运行Android内核源代码
我们知道Android源代码默认是没有它所使用的Linux内核源代码的,因此,我们需要运行定制的Linux内核,就要下载、编译和运行编译。
1、下载Android内核源代码
Android模拟器所使用的Linux内核源代码也是通过Git工具来进行管理的,不过它不像Android源代码那样通过repo脚本来下载,我们需要手动执行git命令下载。
步骤如下:
Android$ mkdir kernel
Android$ cd kernel
Android/kernel$ git clone http://android.googlesource.com/kernel/goldfish.git
下载完成后,在kernel目录中就会看到子目录goldfish,此时,我们需要执行命令git branch -a来查看分支代码,我这里确定使用android-goldfish-2.6.29版本,最后,制定需要的支线代码:git checkout remotes/origin/android-goldfish-2.6.29即可。
2、编译Android内核源代码
在编译Android内核源代码之前,我们需要先修改它的Makefile脚本文件。我们知道Android系统所使用的CPU体系结构是arm的,因此,我们需要将文件Makefile中的ARCH变量设置为arm。同时因为我们是使用PC来为Android模拟器编译内核的,所以,我们还需要在Makefile文件中指定交叉编译工具,即修改里面的CROSS_COMPILE变量值为arm-eabi-,即是表示使用交叉编译工具名称是以”arm-eabi-”作为前缀的。
实现步骤如下:
Android/kernel/goldfish$
Export PATH=$PATH:~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin这里的export也可以加入脚本文件profile中。
Android/kernel/goldfish$
Make goldfish_defconfig
Android/kernel/goldfish$
Make
编译成功后,我们会看到下面的信息提示:
OBJCOPY arch/arm/boot/zImage
Kernel :arch/arm/boot/zImage is ready
这就是表示编译好的内核源代码镜像文件是位于目录Android内核源代码下的arch/arm/boot子目录中。
3、运行Android模拟器
之前我们运行的Android模拟器是利用Android源代码下的kernel-qemu文件,现在我们已经编译好了自己的镜像文件了,所以我们使用-kernel选项来指定启动模拟器,以便可以指定模拟器所使用的内核镜像文件。
实现步骤如下:
Android$ emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage &
命令后面的&表示的是在后台启动Android模拟器,这样做的目的是为了能在同一个终端中运行adb工具来连接Android模拟器。
好了!操作到此,万事已经具备了,只欠实际开发应用程序的东风了!以后,本人会继续编写有价值的参考文档,供有需要的人共同研究!!!
本人最近刚刚新建了一个群号,希望与兴趣相投的同学一起研究学习,申请加入时,请输入加入的理由,谢谢!!!
QQ群号:179914858