【网学网提醒】:网学会员为大家收集整理了ubuntu-android-download提供大家参考,希望对大家有所帮助!
作为开源手机操作系统,android一经推出,便引来业界极大的关注。Google现在的android源码的版本号已经是1.50r1的。越来越多的爱好者开始加入到android源码的研究中,下面就ubuntu9.04上如果去获得android最新源码。
1.安装git和gnupg。输入
$sudoapt-getinstallgit-coregnupg
2.安装其它工具
$sudoapt-getinstallflexbisongperflibsdl-devlibesd0-devlibwxgtk2.6-de
vbuild-essentialzipcurllibncurses5-devzlib1g-dev
3.安装valgrind工具
$sudoapt-getinstallvalgrind
4.安装javasdk
$sudoapt-getinstallsun-java6-jdk
$sudoapt-getinstallsun-java5-jdk
$cd/etc/alternatives
$sudormjavadoc.1.gzjavadoc
$sudoln-s/usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gzjavadoc.1.gz
$sudoln-s/usr/lib/jvm/java-1.5.0-sun/bin/javadocjavadoc
android仅支持1.5以上版本的javasdk,且1.6版本的javasdk在进行androidsdk编译时会出现javadoc错误,在这里我的解决办法时先安装javasdk1.6,接着安装javasdk1.5,然后将系统的javasdk链接到javasdk1.6上,仅是将javadoc和javadoc.1.gz
链接到javasdk1.5上,这样做的好处是在编译android源码和进行android应用开发时,使用的是javasdk1.6,仅在编译androidsdk的doc时,使用的是javasdk1.5版本的javadoc和javadoc.1gz。
5.
下载repo工具
$mkdir$HOME/bin
$vi.bashrc
加入
exportPATH=$HOME/bin:$PATH
$source.bashrc
$curlandroid.git.kernel.org/repo>$HOME/bin/repo
$cd$HOME/bin
$chmod+xrepo
6.导出android项目
$cd
$mkdirAndroid
$cdAndroid
$repoinit-ugit://android.git.kernel.org/platform/manifest.git
并完成提示的配置,这样我们建立的目录就已经和Google的android源码库建立了链接。
7.开始
下载androidplatform的源代码
$reposync
由于android的源码很大,现在完整的代码已经高达3G以上,所以最分文件夹进行同步下载。如要
下载kernel:
$reposynckernel
现在,就可以做别的事,让电脑自动完成源码的
下载工作。
这个操作就是
下载整个Android的源码到本地,具体花费时间和网速有关,cupcake版本源码大概1.3G左右。进入$HOME/Android/可以看到Android的源码目录如下:
--repo--主要是同步管理所用到的一系列文件
--bionic--Android编译过程所需要的一些库
--bootable--负责启动和备份的一些文件
--build--最主要的一些makefile和编译配置文件
--dalvik--经过Google优化了的java虚拟机
--development--开发用的一些文件夹,包括模拟器和工具等
--external--Android工程中引入的外部功能库
--frameworks--中间件部分
--hardware--和硬件有关的一些支持文件,包括wifi,电信模块等
--kernel--经过了优化和修改的linux内核
--packages--所有的上层应用包
--prebuild--Android编译工具所
在目录
--system--一些系统级文件
@@@
kernel是要单独repoinit;reposync的。地址不一样。
apt-get命令一般需要root权限执行,所以一般跟着sudo命令。
sudoapt-getinstallgit-corecurl
这条命令会从互联网的软件仓库中安装git-core和curl。
其中curl是一个利用URL语法在命令行方式下工作的文件传输工具,它支持很多协议,包括FTP、FTPS、HTTP、HTTPS、TELENT等,我们需要安装它从网络上获取Repo脚本文件。
curlandroid.git.kernel.org/repo>~/bin/repo
这句命令会
下载repo脚本文件到当前主目录的/bin目录下,并保存在文件repo中。
最后我们需要给repo文件可执行权限
chmoda+x~/bin/repo
接下来我们就可以利用repo脚本和Git、curl软件获取Android的源代码了:)
首先建一个目录,比如~/android。
然后使用下面命令获取源码:
repoinit–ugit://android.git.kernel.org/platform/manifest.git
这个过程会持续很长的时间(笔者下载了一天),
下载完毕后会看到repoinitializedin/android这样的提示,说明本地的版本库已经初始化完毕,并且包含了当前最新的sourcecode。
如果我们想拿某个分支版本的代码,而不是主线代码,需要使用-b参数指定branch的名字,比如:
repoinit–ugit://android.git.kernel.org/platform/manifest.git–bcupcake
如果我们只是想获取某一个project的代码,比如kernel/common,就不需要repo脚本了,直接使用Git工具即可,如果仔细研究repo脚本会发现,repo脚本其实就是组织Git工具去获取各个Project并把它们组织到同一个项目Android内。
gitclonegit://android.git.kernel.org/kernel/common.git
我们上面使用repo脚本获取了各个项目,那么接下来就需要把整个Android代码树同步到本地,如下:
reposyncproject1project2…
笔者使用reposync命令直接同步全部项目到本地。
二、源码编译
全部同步完毕后,进入到Android目录下,使用make命令编译,你会发现出现如下错误提示:
hostC:libneo_cgi<=external/clearsilver/cgi/cgi.c
external/clearsilver/cgi/cgi.c:22:18:error:zlib.h:Nosuchfileordirectory
这个错误是因为我们缺少zlib1g-dev,需要使用apt-get命令从软件仓库中安装,如下:
sudoapt-getinstallzlib1g-dev
同理,我们还需要依次安装如下软件
sudoapt-getinstallflex
sudoapt-getinstallbison
sudoapt-getinstallgperf
sudoapt-getinstalllibsdl-dev
sudoapt-getinstalllibesd0-dev
sudoapt-getinstalllibncurses5-dev
sudoapt-getinstalllibx11-dev
以上软件全部安装完毕后,运行make命令
再次编译Android源码。
这个时候你会发现出现很多java文件无法编译的错误,打开Android的源码我们可以看到在android/dalvik/libcore/dom/src/test/java/org/w3c/domts下有很多java源文件,这意味着编译Android之前需要先安装JDK。
首先从sun官方网站
下载jdk-6u16-linux-i586.bin文件并安装它。
在Ubuntu8.04中,/etc/profile文件是全局的环境变量配置文件,它适用于所有的shell。在我们登陆Linux系统时,首先启动/etc/profile文件,然后再启动用户目录下的~/.bash_profile、~/.bash_login或~/.profile文件中的其中一个,执行的顺序和上面的排序一样。如果~/.bash_profile文件存在的话,一般还会执行~/.bashrc文件。
所以我们只需要把JDK的目录放到/etc/profile里即可,如下:
JAVA_HOME=/usr/local/src/jdk1.6.0_16
PATH=$PATH:$JAVA_HOME/bin:/usr/local/src/android-sdk-linux_x86-1.1_r1/tools:~/bin
然后重新启动一下机器,输入java–version命令,提示如下信息代表配置成功:
javaversion"1.6.0_16"
Java(TM)SERuntimeEnvironment(build1.6.0_16-b01)
JavaHotSpot(TM)ClientVM(build14.2-b01,mixedmode,sharing)
在编译完整个项目后,终端会出现如下提示:
Targetsystemfsimage:out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
Installsystemfsimage:out/target/product/generic/system.img
Targetramdisk:out/target/product/generic/ramdisk.img
Targetuserdatafsimage:out/target/product/generic/userdata.img
Installedfilelist:out/target/product/generic/installed-files.txt
root@dfsun2009-desktop:/bin/android#
三、源码运行
在编译完整个项目后,如果我们需要观看编译后的运行效果,那么就需要在系统中安装模拟器android-sdk-linux_x86-1.1_r1,这个SDK的
下载地址为:
linux:dl.google/android/android-sdk-linux_x86-1.1_r1.zip
mac:dl.google/android/android-sdk-mac_x86-1.1_r1.zip
windows:dl.google/android/android-sdk-windows-1.1_r1.zip
解压后需要把/usr/local/src/android-sdk-linux_x86-1.1_r1/tools目录加入到系统环境变量/etc/profile中。
然后找到编译后android的目录文件out,我们发现在android/out/host/linux-x86/bin下多了很多应用程序,这些应用
程序就是android得以运行的基础,所以我们需要把这个目录也添加到系统PATH下,在$HOME/.profile文件中加入如下内容:
PATH=”$PATH:$HOME/android/out/host/linux-x86/bin”
接下来我们需要把android的镜像文件加载到emulator中,使得emulator可以看到android运行的实际效果,在$HOME/.profile文件中加入如下内容:
ANDROID_PRODUCT_OUT=$HOME/android/out/target/product/generic
exportANDROID_PRODUCT_OUT
然后重新启动机器。
下面就可以进入到模拟器目录中并启动模拟器
cd$HOME/android/out/target/product/generic
emulator-imagesystem.img-datauserdata.img-ramdiskramdisk.img
总结一下安装过程中的关键点:
1:JDK版本必须安装
2:利用下面的命令确保所需软件都被正确安装
sudoapt-getinstallflexbisongperflibsdl-devlibesd0-devlibwxgtk2.6-devbuild-essentialpythonvalgrindcurlgit
3:内存及虚拟内存保证在2GB以上,可以采用命令行free-m查看内存是否足够,如果内存不够终端停滞
@@@
编译环境
Ubuntu9.04Desktop
下载和编译流程
根据source.android/download的说明,成功的下载了所有源代码,整个目录文件接近2G
前期准备:
安装git工具内核,命令sudoapt-getinstallgit-core
1.下载repo工具
curlandroid.git.kernel.org/repo>$HOME/bin/repo
cd$HOME/bin
chmod+xrepo
2.导出android项目
mkdirandroid
cdandroid
repoinit-ugit://android.git.kernel.org/platform/manifest.git-bcupcake(如果不出错的话,5分钟内应提示成功,跟网络速度有关)
3.开始下载androidplatform的源代码
reposync(这个操作会持续一段时间,与你自己的网速有关)
4.编译前,建议装的软件包如下(使用apt-get安装)
flexbisongperflibsdl-devlibesd0-devcurllibncurses5-devzlib1g-devlibx11-dev
5.编译
make(非常漫长的等待,与你的CPU速度有一定关系,建议是睡觉前编译)
编译时,以下源代码需要加入相应的头文件(include)
/android/cupcake/frameworks/base/tools/aidl/aidl.cppstring.h,stdlib.h
/android/cupcake/frameworks/base/tools/aidl/options.cppstring.h
/android/cupcake/frameworks/base/tools/aidl/search_path.hstring,string.h
/android/cupcake/frameworks/base/tools/aidl/generate_javastring.h
/android/cupcake/external/srec/tools/thirdparty/OpenFst/fst/lib/vector-fst.hstring.h
/android/cupcake/external/srec/tools/thirdparty/OpenFst/fst/lib/symbol-table.cppstring.h
/android/cupcake/build/tools/atree/files.cppstring.h,stdlib.h
/android/cupcake/build/tools/atree/fs.cppstring.h
/android/cupcake/frameworks/base/tools/localize/file_utils.cppstring.h,stdlib.h
/android/cupcake/frameworks/base/tools/localize/localize.cppstring.h,stdlib.h
/android/cupcake/frameworks/base/tools/localize/Perforce.cppstring.h,stdlib.h
/android/cupcake/frameworks/base/tools/localize/XLIFFFile.cppiostream,algorithm
/android/cupcake/frameworks/base/tools/localize/XMLHandler.cppiostream,algorithm
/android/cupcake/development/emulator/qtools/dmtrace.cppunistd.h
编译完毕以后,会发现在代码目录下多了一个out目录
6.设置运行环境(修改$HOME/.profile文件),加入以下内容
#Android
PATH=”$PATH:$HOME/android/out/host/linux-x86/bin
”
ANDROID_PRODUCT_OUT=$HOME/android/out/target/product/generic
exportANDROID_PRODUCT_OUT
设置完毕后,退出并重新登录
7.使用虚拟机运行
cd$HOME/android/out/target/product/generic
emulator-imagesystem.img-datauserdata.img-ramdiskramdisk.img
应该看到以下的画面(第一次开启的时候,应该还有一个向google反馈的一个对话框,按下确定即可)