编译Android源代码
本文介绍的是如何在linux环境下获取、编译源代码,并在编译之后运行。使用的操作系统为Ubuntu11.04
获取源代码
Android源代码仓库是分布式的,叫做GIT,所以在获取代码之前先安装git。Git与常用的svn,cvs不一样,但不必担心,android为了简化操作,使用phython脚本语言写了一个简化程序叫做curl。只需要按以下步骤一步一步操作就行了。
1. 安装git及curl
$ sudo apt-get install git-core curl
在此之前我已经安装了git, gitg(git的图形化工具)
2. 安装repo脚本
$ curl http://android.git.kernel.org./repo >~/repo
3. 授权并建立本地仓库
$ chmod a+x ~/repo
$ mkdir android-source
$ cd android-source
4. 初始化repo客户端
$ ~/repo init -u git://android.git.kernel.org/platform/manifest.git
但是使用git协议我连接不上服务器,使用http能够访问,所以我修改了repo文件
REPO_URL='http://android.git.kernel.org/tools/repo.git'
并输入下面的指令来初始化git
$ ~/repo init -u http://android.git.kernel.org/platform/manifest.git
如果你想取分支版本的话,那么请使用-b选项,如取2.2使用以下指令
$ ~/repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
注:froyo是2.2的版本名称5. 检出源代码
$ ~/repo sync
到这里,可以休息一下了,慢慢下吧。然后接着去做一些编译前的准备工作吧。
初始化编译环境
1. 安装jdk
我机器上的JDK早就装好了。所以这里copy官网的安装指南
对于Android 2.3及其更高版本,需要安装jdk1.6
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
对于Android 2.2及其以下版本,需要安装jdk1.5
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk
2. 安装一些必备包
在安装之前,首先看一下,你的系统是多少位的。不同位的系统安装的包不一样
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
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 libreadline5-dev libz-dev libgl1-mesa-dev
官网原文注:如果在64位的系统中编译2.2或之前的版本,可能需要安装以下额外的包来构造32的编译环境。
$ sudo apt-get install gcc-multilib g++-multilib libc6-i386 libc6-dev-i386
NND,我编译的是2.3,所以没有安装这些包。所以我直接去make了。但是make失败了。有个错误是/usr/bin/ld: cannot find -lstdc++
郁闷,后来google了一下,有大侠也遇到过这问题,安装g++-multilib就好了。
所以我又安装了g++
$ sudo apt-get install g++ g++-multilib
3. 配置USB的访问
在GUN/LINUX(尤其是Ubuntu),默认情况是不允许用户直接访问USB设备的。需要以下配置来允许访问USB
推荐的方式是在/etc/udev/rules.d/目录下建立一个51-android.rules的文件(注意了,必须以root用户),并将以下内容写入到文件中
# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"
# adb protocol on crespo (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
注:username必须替换为此文件的所有者。
我使用的是sudo gedit创建文件,然后查看了一下属性,拥有者为root,所以把<username>替换为root了。
编译
1. 初始化环境
使用build/setupenv.sh脚本来初始化编译环境。使用
$ source build/envsetup.sh
或
$ . build/envsetup.sh
都可以
2. 选择目标版本
例如
$ lunch full-eng
是一个开启所有调试的编译
详细的目标版本选择请见官网。
3. 编译
$ make
以上准备工作做好了之后,终于到了最紧张的时刻了,以致于都没把-jN参数加上去,我电脑双CPU,4核双线程,加个-j16是不是会编译快些呢?我都写好这文档了,还在编译中呢。唉。不过还是挺高兴的。前天还刚接触linux系统,基本的linux指令都不会呢。
小结
公司有网络就是好哇,在以前公司,都是封闭式办公的,有时候遇到一个小问题,搞不好会阻塞一整天。不过网络信息量太大。如何找到权威而全面的资料是很重要的。我优先是参考官网相关的文档的。对于具体问题,先静下心来分析,然后一步步解决。当然也可以问前辈,可以省去不少时间。
参考资料
http://source.android.com
分享到:
相关推荐
在开始编译Android源码之前,首先需要确保获取完整的Android源代码。这一部分将详细介绍如何使用Git和Repo脚本完成这一任务。 ##### Git简介 Git是一种分布式版本控制系统,由Linux之父Linus Torvalds开发,旨在更...
### Ubuntu环境下编译Android源码及安装的知识点详解 #### 实验环境介绍 - **操作系统**: Ubuntu 10.04 - **Android版本**: 2.1 - **开发板**: ARM9 Mini6410 - **目标**: 在Ubuntu环境下编译Android 2.1源码并进行...
在不同操作系统下编译Android源码需要更改一些Android源码的配置项,脚本用于自动化更改配置项.zip 在不同操作系统下编译Android源码需要更改一些Android源码的配置项,脚本用于自动化更改配置项.zip 在不同操作系统...
### Mac 下编译 Android 源代码的关键步骤与注意事项 #### 一、磁盘分区 在 Mac 上编译 Android 源代码之前,首先要解决的一个问题是磁盘分区问题。这是因为 Mac 的默认文件系统(APFS 或 HFS+)通常设置为不区分...
Android 源码单独编译模块是指在 Android 源代码工程中编译指定的模块,而不需要重新编译整个 Android 系统。这种方法可以节省大量的时间和资源,因为编译整个 Android 系统需要漫长的等待时间。 在 Android 源代码...
本文档详细介绍了如何在Ubuntu 8.04环境下获取并编译Android源代码的全过程。从Git和Repo脚本的使用,到编译前的环境配置,再到具体的编译步骤,均给出了明确的操作指导。这对于希望深入学习Android系统底层原理的...
在 Ubuntu 环境中编译 Android 源码并运行 Emulator 2 需要经过多个步骤,包括安装环境、设置环境变量、安装 repo、下载 Android 源码、编译 Android 源码等。 一、安装环境 在 Ubuntu 中,需要安装一些基本的环境...
在 Android 源代码工程中,单独编译某个模块是一件很有必要的事情。尤其是在我们修改了某个模块或新增了自己的模块时,重新编译整个 Android 系统镜像 system.img 是非常耗时的。这时,我们可以使用 Android 提供的...
### Ubuntu系统中下载并编译Android源代码 #### 一、Ubuntu操作系统简介 Ubuntu是一款流行的开源操作系统,基于Linux内核,主要面向桌面用户。它的名字来源于非洲南部祖鲁语或豪萨语中的“ubuntu”一词,含义为...
### Ubuntu 10.04下编译Android源码技术文档 #### 一、环境准备与配置 在Ubuntu 10.04环境下编译Android源码是一项复杂但极具价值的任务。为了确保编译过程顺利进行,首先需要完成一系列准备工作。 1. **系统更新...
#### 一、获取 Android 源代码 **Git与集中式版本控制系统对比** - **Git**:由 Linux Torvalds 开发,是一种分布式版本控制系统。与 Subversion 和 CVS 这样的集中式版本控制系统不同,在 Git 中,每个开发者的...
总的来说,`.ipr`和`.iml`文件在Android P源码编译过程中起着关键作用,它们帮助开发者在Android Studio环境中高效地管理和编译大规模的源代码项目。通过理解这些文件的作用,开发者可以更流畅地进行源码级别的调试...
在Ubuntu 10.04环境下编译Android源码的过程是一项复杂的任务,涉及到多个步骤和技术。首先,要了解Git,这是一个分布式版本控制系统,由Linux Torvalds创建,用于管理Linux内核开发。与传统的集中式版本控制系统如...
【Ubuntu 10.04下编译Android源码实用指南】 在Ubuntu 10.04系统中编译Android源码是一项复杂的过程,需要掌握Git版本控制系统以及Android的Repo工具。Git是Linux Torvalds为管理Linux内核开发而创建的分布式版本...
在深入探讨如何编译Android独立源代码之前,我们先来了解下整个过程的基本框架。Android作为一个开源项目,其源代码包含了操作系统的核心部分以及一系列应用程序和服务。对于开发者而言,能够独立编译Android的某个...
#### 一、获取 Android 源代码 1. **Git 的介绍与安装**: - Git 是一种分布式版本控制系统,由 Linux Torvalds 为了更好地管理 Linux 内核开发而创建。 - **集中式版本控制系统**(如 Subversion 和 CVS)与 **...