Ubuntu 10.04 64位下源码编译android-4.0.4_r2.1
参考网站 http://source.android.com
具体步骤如下:
ubuntu默认情况是用普通用户进行登录系统的,我为了操作简便也就以root用户进行了登录。从普通用户切换的root用户登录需要做如下几个步骤;
我建的普通用户名为joye
$ sudo passwd root (此处是为root用户设置密码)
然后输入一个为root创建的密码,在输入一次进行确认。再执行以下命令
$ gksu natutilus
之后点击右上角的关机按钮下拉菜单中,有一个切换用户,以root身份登录就行了。
下面我们开始android 环境的搭建:
首先我们需要做一些准备工作,具体如下
1、 安装python2.5-2.7
2、 GNU Make 3.81-3.82
3、 JDK6 JDK5 (注:最好两者都安装上)
4、 Git 1.7
安装python2.5-2.7
默认情况下是已经安装过的,我们可以通过以下命令查看是不是安装过python
#dpkg -l python
提示为 ii python 后面为版本号 则表示已经安装
如果没有安装我们可以使用命令进行安装
#apt-get install python
安装GNU Make
默认已经安装,如果没有安装,使用以下命令进行安装
#apt-get install make
查看是否已经安装使用以下命令
#dpkg -l make
安装jdk6 和jdk 5
我先安装的是jdk6
#add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse
(注:与参考网站上提供的网站不同)
#apt-get update
#apt-get install sun-java6-jdk
然后安装jdk5
#add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy main multiverse"
#add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy-updates main multiverse"
#apt-get update
#apt-get install sun-java5-jdk
安装完成后使用命令
#java -version
验证是否成功
安装Git
#apt-get install git-core
(关于git后面会在进行设置)
5、 安装编译所需软件包
#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
此处要特别注意的是字母“l”和数字“1”的区别,好些人敲了好些次的命令都不正确,才发现把这两个给弄错了。我平时都是把数字“1”替换成“9”,给字母“l”做区别。当然输入一定要认真了。
6、 配置USB访问权限
在GNU/Linux系统下(特别是Ubuntu系统下),默认配置下普通用户不能直接访问usb设备,需要对系统进行一些配置。
以root用户创建新配置文件/etc/udev/rules.d/51-android.rules,并将以下内容拷贝到新配置文件中:
# 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>"
并将以上内容中的
"<username>" 修改为用户名 如我的用户名 "joye"
7、 下载源码
首先确保在你的用户目录下有一个 bin目录,添加到PATH路径
#mkdir ~/bin
添加环境变量我介绍两种方法
如果你只是临时性的添加修改,下次开机就无效的话,可以输入
PATH=~/bin:$PATH
如果下次开机仍然生效,我把他添加到了/etc/profile文件中,使用以下命令
#nano /etc/profile
在文件的最后添加以下两行
PATH="/root/bin/:$PATH"
export PATH
Ctrl+x退出 y保存,enter返回终端
下载repo脚本文件,确保这个文件有执行权限,执行以下命令
#curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
#chmod a+x ~/bin/repo
初始化repo客户端
创建工作目录,用于存放android源码
#mkdir working_directory
#cd working_directory
获取repo最新的配置
#repo init -u https://android.googlesource.com/platform/manifest
(上面的-u用来指定在当前目录安装repository ,会在当前目录下创建一个目录".repo"
-u参数指定一个URL,从这个URL中取得repository的manifest文件,获取的manifest文件放在.repo目录中。命名为manifest.xml。 这个文件的内容其实就是所有被git管理的仓库的列表。)具体内容参见: http://wenku.baidu.com/view/34580eb8fd0a79563c1e729a.html
(上面网址引用别人的)
指定一个manifest分支,使用-b参数
#repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.4_r2.1
获取源码
#repo sync
如果中间出现中断,这个很正常,你可以再次输入 repo sync 命令来进行下载
知道下载完成为止。
8、 使用验证
首先在用户宿主目录下新建一个文件 .netrc 然后使用google账号进行验证
点击红色标记部分会提示你输入google账号和密码
使用nano命令打开 .netrc 把标记的这部分内容给粘贴到.netrc.里面 (我的google账号
用户名:xxxxx 密码 xxxxxx (自己申请)
具体操作如下
在宿主用户目录下新建文件
#touch .netrc
#nano ~/.netrc
然后把上面的那段文字复制到上面 按 crtl+x 退出,提示是否使用文件名.netrc ,点击 y 确认,然后点击 enter 保存退出。
9、 验证git标签
#gpg --import
然后把下面的内容复制粘贴上去 按crtl+d 退出
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----
然后初始化git
#git init
#ls -A
如果可以看到.git则表示成功
10、 设置ccache
在.bashrc 文件中输入以下内容,具体如下
#nano /root/.bashrc
输入下面内容
export USE_CCACHE=1
设置cache目录大小 此处设置为50G (注意:在源码目录下输入以下命令)
prebuilt/linux-x86/ccache/ccache -M 50G
11、 搭建系统
初始化 输入命令(在源码目录下 /root/working_directory/)
#source build/envsetup.sh
或者
#. build/envsetup.sh
然后选择编译目标
#lunch full-eng
编译
#make -j4
完成之后输入命令
#emulator
就可以看到虚拟设备了。