Android 源码下载注意事项

本文详细介绍了在Ubuntu环境下为Android系统搭建源码编译环境的过程,包括系统配置要求、所需软件安装步骤及USB权限配置等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人的环境:

系统:Ubuntu12.10

参照:http://source.android.com/source/initializing.html 和 http://source.android.com/source/downloading.html


第一部分:本地环境初始化

文档上说,只支持linux系统和mac os,不支持windows,所以需要准备相应的系统。

1. 首先,要选择你要下载的版本号,版本号不同,相应的环境配置是不一样的。

2.所有版本共同的配置。

     Gingerbread (2.3.x) 及其以后的新版本,包括主干分支(master branch), 需要一个64位的环境。Gingerbread (2.3.x) 之前的版本可以用32位的环境编译。

    注意:在虚拟机中编译源码也是可以的。如果你在虚拟机里运行Linux, 你需要至少16GB的内存或者缓存分区,并且确保至少30GB的硬盘空间。

需要安装的软件:

    1.Python 2.6 -- 2.7 安装命令: sudo apt-get install python  查看版本号:apt-show-versions python 或者 python --version

    2.GNU Make 3.81 -- 3.82 安装命令:sudo apt-get install build-essential 查看版本号:apt-show-versions make 或者 make --version

    3.JDK Gingerbread (2.3.x) 及其以后的新版本安装1.6,Gingerbread (2.3.x)以前的安装1.5。你可以在java.sun.com下载。

    4. Git 1.7 以上 安装命令:sudo apt-get install git 检查版本号:apt-show-versions git 或者 git --version

3.这个是JDK的安装

Java 6: for Gingerbread and newer

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

Java 5: for Froyo and older

$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy-updates main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk
注意:这里一定要用sun公司的jdk。

4. 安装系统需要的包(Ubuntu 10.04 -- 11.10)

你需要有一个64位的Ubuntu系统。推荐Ubuntu10.04. 其他更新版本的Ubuntu只是实验性质的支持,不能保证出了主分支(master branch)以外的能够成功。

$ 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


On Ubuntu 10.10:

$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so


On Ubuntu 11.10:

$ sudo apt-get install libx11-dev:i386


5. 安装系统需要的包 (Ubuntu 12.04)
只能保证主分支在实验性的在Ubuntu 12.04上成功,不能保证其他分支成功。

$ sudo apt-get install git gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so


6. 配置USB权限

在GNU / Linux系统(尤其在Ubuntu系统)下,普通用户默认是不能访问USB设备的。为了能够访问USB设备,所以需要进行配置。

推荐的方式如下:创建一个文件/ etc/udev/rules.d/51-android.rules, 

$ sudo gedit / etc/udev/rules.d/51-android.rules
把如下内容拷贝到文件里面,然后用自己的用户名替换<username>

# 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/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"
# adb protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>"
# fastboot protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>"
# adb protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>"
# fastboot protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"


这个配置在Ubuntu Hardy Heron (8.04.x LTS) 和 Lucid Lynx (10.04.x LTS)是能够成功编译到设备上的。Ubuntu其他的版本和其他的GNU/Linux系统可能需要其他的配置。


7. 设置缓存区(cache)

你可以用这个工具选择性的去build. 缓存区(cache)的作用是当你重新build的时候他可以作为一个编译缓存区加速你的编译速度。如果你经常使用“make clean”或者在不同的分支间来回的切换,这个非常好用。

在~/.bashrc 或者其他环境变量里追加下面的代码:

export USE_CCACHE=1

缓存默认会存到~/.ccache这个目录下。如果你的home目录在NFS或者其他非本地的文件系统上,也许你想把他在~/.bashrc中设置成其他的目录(我没试)。

export CCACHE_DIR=<path-to-your-cache-directory>
缓存区的大小建议是50GB~100GB. 如果你下载完了代码,执行下面的代码:

prebuilts/misc/linux-x86/ccache/ccache -M 50G

当编译Ice Cream Sandwich (4.0.x) 或者更老的版本, 缓存区是在不同的位置。

prebuilt/linux-x86/ccache/ccache -M 50G

这个设置要持久的保存在~/.ccache的 CCACHE_DIR 上。像上面。


8. 用一个单独的编译输出路径

默认情况下,源码输出到out/下的分支目录。在一些多存储设备的机器上,源码和输出在不同的分区上速度会快一些。下面是设置输出目录的。

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

这个仅仅支持 Jelly Bean (4.1) 和更新的版本,包括主分支. 


第二部分:下载源码


1. 安装repo

$ mkdir ~/bin
$ PATH=~/bin:$PATH

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
这一步我是可以顺利执行的。很多网友说不能执行。如果你遇到了,给我反馈。

2. 初始化repo客户端

创建一个目录来存放源码,如果你打算下载多个分支,最好建几个子文件夹。

我的目录是:~/android_resource/android-4.0.1_r1。



有时间再写。实在太困了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值