在Ubuntu下获取Android4.0源代码并编译(一)
搞了几个月的Android应用开发,勉强算是个Android开发者了吧,Android本就是开源的,还是把源代码下载下来自己编译一下,看看是个什么东西,出于好奇,和以后的职业发展,开始了无休止的Android研究过程。。。
这篇连载博客用来记录我从下载源代码到编译的整个过程,开始百度和谷歌了无数资料,遇到了不少的问题,以总结出来,希望对后来者有所帮助,于我也算是一种总结吧
接下来首先开发获取最新的Android源代码,目前最新版本是4.0
要获取源代码,当然还得先看官方文档怎么说http://source.android.com/source/initializing.html
第一步:初始化编译环境
To build the Android source files, you will need to use Linux or Mac OS. Building under Windows is not currently supported
大概意思就是指要编译Android源代码文件,你需要使用Linux或者Mac OS系统,在Windows下编译当前不是被支持的,所以,得安个Linux,我目前用的是装在虚拟机的Ubuntu,当然其它的也可以的。
Note: The source download is approximately 6GB in size. You will need 25GB free to complete a single build, and up to 80GB (or more) for a full set of builds.
这一句表示有空间容量的限制,我还在下载,据说完全下载后有6G左右,建议有多大空间就分多大吧,多多益善。
第二步:建立一个Linux的编译环境
在虚拟机中安装Ubuntu以后(在安装Ubuntu的时候,建议断开网络,或者是在连网下载东西的时候,选择skip跳过,这样安装的快一些,我用的最新的ubuntu11.10),接下来:
安装JDK
一般ubuntu安装好后自带有openJDK,这里我们需要使用的是Sun公司的JDK,但是Sun JDK不再ubuntu的软件源里面,为了下载到它,需要增加一个软件源地址,对于到底用JDK5还是用JDK6呢?官方有做解释的,JDK6适合于编译Gingerbread (姜饼)或者更新的版本,就是2.3或者2.3以上的版本吧,对于2.2或者更低版本的,推荐用JDK5 ,这里我们编译4.0的,当然就用JDK6了
在终端中运行下面三句:
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
根据提示,一步一步地安装,记得安装的时候,会在终端中出来一个提示框,类似于许可协议的,下面有个确定,但就是点不上,按一下Tab键就选中了,直接确定就会安装,这样就安装好了JDK,可以在终端中测试一下,运行
$java -version
如果有相应的版本提示信息的话,就表示安装成功了。
接下来,如果是32位系统的话,在终端中运行
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
libxml2-utils xsltproc
如果是64位,运行
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
官方推荐用64位的,我当时没看到,用32位也不会有太大的问题,执行到这步,就已经安装好了Git和Python,除了JDK,这两个也是必须的。下面就要准备下载源码了。。。
第三步:准备下载Android源代码
接下来需要安装、初始化和配置Repo工具
- 安装Repo
首先确保在你的home目录下面有一个bin目录,如果没有的话,执行下面命令:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
然后下载Repo脚本并确保它能够执行
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
- 初始化配置Repo客户端
首先创建一个空目录用来保存工作文件
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
然后初始化Repo
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
第四步:开始下载Androd源文件
$ repo sync
这是一个很漫长的过程,等吧,如果发现屏幕卡住了,没动了,而且也没有流量显示,或者感觉不到在下载,类似于这种

建议中断一下(按ctrl + z),然后重新执行第三步(repo sync),这时你会看到会有下载信息。第一次执行repo sync的时候,可能会有错误提示,记不清楚了,百度一下也会出来,重新运行一下repo sync命令就行了。。。
目前我正在下载中,等吧

在Ubuntu下获取Android4.0源代码并编译(一)的更多相关文章
- ubuntu下tesseract 4.0安装及参数使用
		tesseract是一个开源的OCR引擎,最初是由惠普公司开发用来作为其平板扫描仪的OCR引擎,2005年惠普将其开源出来,之后google接手负责维护.目前稳定的版本是3.0.4.0版本加入了基 ... 
- ubuntu 下获取Let's Encrypt免费ssl证书
		# ubuntu 下获取Let's Encrypt免费ssl证书 # 一.安装Nginx https://www.cnblogs.com/watermeloncode/p/15476317.html ... 
- Ubuntu下安装并配置VS Code编译C++
		作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7069091.html Ubuntu下安装并配置VS Code编译C++ 安装 ... 
- ubuntu下C程序的编辑、编译、运行
		均以hello world程序为例 一.vim hello.c/hello.cpp 创建hello.c/hello.cpp文件,并进入vim界面 二.此时按键盘上的很多键均不会有任何反应,键入i,进入 ... 
- ubuntu下安装selenium2.0 环境
		参考:http://www.cnblogs.com/fnng/archive/2013/05/29/3106515.html ubuntu 安装过程: 1.安装:setuptools $ apt-ge ... 
- Ubuntu下获取内核源码
		查看当前系统使用的内核版本: apt-cache search linux-source 输出如下: linux-source - Linux kernel source with Ubuntu pa ... 
- QT210 android2.3 和android4.0 烧写编译日记
		QT210下载烧录编译android2.3过程 工作环境:ubuntu12.04.5 | QT210开发板光盘 | QT210开发板 android2.3编译环境:gcc version 4.4.7 ... 
- QT210 Android4.0源码编译和烧录文档整理
		开发环境说明: Ubuntu 12.04 LTS 32bit 源码文件目录: 勤研光盘2013-5-4\4.0 https://github.com/jackyh (建议在Linux环境下通过git下 ... 
- 在Ubuntu 14.04 TLS下openvas V8.0源代码安装过程
		[Qboy原创]详细记录源代码的安装过程 1.下载原代码 在http://www.openvas.org/install-source.html下载 Libraries 8.0.8 Scanner 5 ... 
随机推荐
- 局域网Cesium离线影像及瓦片影像地图加载
			1.Cesium简介 优点: cesium展示地图数据效果比较好,解析2D地图各种不同服务类型的数据源,比如百度地图.天地图.arcgis地图.BingMap.openStreetMap.MapBox ... 
- (type interface {}) to type string
			go 语言开发中,经常会在函数中碰到使用 insterface{} 作为接收任意参数,但是我们接收的数据经常是需要做类型转换,由于是初学者,因此,初次转换我是直接就 func New(paramete ... 
- 内存管理[5]通过 GetProcessHeaps 函数获取了当前进程的堆句柄列表
			本例在建立一个新的堆前后分别通过 GetProcessHeaps 函数获取了当前进程的堆句柄列表, 没想到一个最简单的程序也有 5 个堆. 效果图: unit Unit1; interface use ... 
- [CSS3] Target HTML Elements not Explicitly set in the DOM with CSS Pseudo Elements (Blockquotes)
			Pseudo elements allow us to target elements that are not explicitly set in the DOM. Using ::before : ... 
- 【整理】nand相关
			记录nand相关知识.主要是mtd和ubi 什么是UBI 它是一种flash管理方式 flash是一系列连续的物理擦除块组成的. UBI卷是一系列连续的逻辑擦除块(eraseblock),每一块都能够 ... 
- UI_Target/action 设计模式
			RootView.m 中 UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; button.frame = CGRectM ... 
- php生成.php文件
			<?php // -- test.php -- // //搜集资料 $str_tmp="<?php\r\n"; //得到php的起始符.$str_tmp将累加 $str ... 
- AVL树,红黑树,B-B+树,Trie树原理和应用
			前言:本文章来源于我在知乎上回答的一个问题 AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中? 看完后您可能会了解到这些数据结构大致的原理及为什么用在这些场景,文章并不涉及具体操作 ... 
- mips-openwrt-linux-gcc test_usbsw.c -o usbsw 编译问题
			mips-openwrt-linux-gcc: warning: environment variable 'STAGING_DIR' not defined mips-openwrt-linux ... 
- jsp获取sina天气
			<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ... 
