$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk
3.1.2 添加须要的包php
64位系统:html
$ 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
对于ubuntu 10.10:java
$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
对于ubuntu 11.10:python
$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
32位系统:linux
$ 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
以上的方式能够正常的在ubuntu下完成源码编译环境的设置。完成以上的步骤设置,就能够接下来的源码下载了。这个时候没法去确认,只能在源码的编译过程当中,碰到了错误,再来解决问题。
android
3.2 源码下载
P.S:有此时候,环境须要设置上网代理。这里须要在终端里面进行代理设置,不然是不能正常的进行下载操做。
设置代理在终端上设置:
$export http_proxy=http://username:pwd@yourproxyaddress:proxyport $export https_proxy=https://username:pwd@yourproxyaddress:proxyport #查询是否设置成功可使用echo命令打印出刚设置的代理,或能够正常显示出设置的值说明,已经设置完成。 $echo $http_proxy $echo $https_proxy
3.2.1 下载repo
因为Android源码内容及模块不少,谷歌使用了git的版本控制工具,并对不一样的模块设置不一样的git服务器,又自行研发了repo工具,把上百的git工程,统一块儿来。只须要一个repo文本,即可以从上百的git服务器,取到完成的Android源码。
在用户目录下,建立bin文件夹,用于存放repo,并把该路径设置到环境变量中:
$ mkdir ~/bin $ PATH=~/bin:$PATH
下载repo的脚本,用于执行repo.git
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo
$ mkdir myandroid $ cd myandroid
在上面建立的目录下运行repo进行下载源码:
下载主线分支,主分支里面包含着最新修改的bugs,并未正式发出版本的最新源码。
$ repo init -u https://android.googlesource.com/platform/manifest
下载其余分支,正式发布的版本,能够经过添加-b的命令下载下来。
shell
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
以上操做初始化了一个repo客户端,设置分支的方向。
出下如下信息,说明了已经在正常的进行客户端下载操做。
在下载过程当中会须要填写Name及Email,填写完以后,选择Y进行确认。
最后,提示repo初始化完成在所在的目录下,这里也能够看到当前的目录下有一个隐藏文件.repo/ 这个文件里面设置着一些初始化的信息。
接下来就是代码同步的过程了,这个过程很漫长,也须要颇有耐心。
虽然只是一个简单的命令,即:
$ repo sync
效果以下:(若出现了new branch 、new tag说明已经在正常的同步过程了)这时只须要等待其完成,这个同步的时间会好久,由于Android的代码所有下载下来了,也包括着其余的分支。整个源 码大概会有16G左右,唯有等待了,但这个时候能够用来准备一下开发环境。
下载一个漫长的过程,在下载的过程当中,有能够会有中断的状况,这时须要从新的repo sync,进行继续的同步了。下载完成的最后,会有许多100%的下载成功的提示,
3.3.1 构建本地开发分支
主要是构建本地开发分支,在本地的开发分支上可进行添加和修改本身想要的代码。
在源码的根目录下
$git --git-dir .repo/manifests/.git/ branch -a

以上这些就是分支的名称,当但愿去切换到其余分支上的时候,这里以切换到android-4.0.3_ri,并建立本身的开发分支为例以下:ubuntu
$repo init -b android-4.0.3_r1
#初始化客户端到某一分支
$repo sync
#进行同步,此时更新的速度比一开始的源码下载要快得多了,大概个把小时可完成
$repo start myandroid4.0.3 --all
#构造本地分支,取一个分支名称myandroid4.0.3
$repo checkout myandroid4.0.3
#检出到本身建立的分支上。
四、开发环境搭建
4.1 开发环境搭建结构图
图4-1 Android源码开发环境搭建
上图画出我在对Android源码上的学习和工做上所设置的开发环境。这是目前为此我感受比较合适的方式。
对于上面的几点,解决如下几点:
一、为什么不直接在ubuntu环境下直接去使安装eclipse就行了?
理由: 对于我我的来讲,编辑和修改代码仍是习惯于window环境下,ubuntu里面的环境只是个别状况下才去进行编译,这里面所设计的开发环境适用于习惯基 于window下写代码的,若是可自己就已经习惯在ubuntu下进行开发,可直接在ubuntu里面安装eclipse便可。
二、为何使用samba来映像挂载,而不是使用mount,直接把window下的目录直接挂载到ubuntu上就行了?
理由:若是以mount的方式,把window的目录挂载到ubuntu上,再把源码移至挂载的目录上,就会发现,复制或移动 的过程当中,会报出文件已经存在的现象,提示是否替换。这个缘由很简单,windows下的文件系统对文件名的大小写不敏感,对于它来讲a.txt和 A.txt实际上是同一个文件,而对于linux系统来讲a.txt和A.txt则是两个不一样的文件。Android源码也正由于有这样的同名却大小写一致 的状况,因此只能支持在ubuntu环境下。这时就须要把ubuntu环境下的目录给挂载出来,以samba挂载出来的目录实为ubuntu下的,因此其 文件系统是基于linux的。这样的方便不会致使破坏源码的现象.
三、为什么这里要使用Xmanger工具。
理由:工具只是为了提升工做效率,Xmanger工具里面包含着不少实用的小工具,包括Xshll,Xftp等终端命令访问和 文件操做,更方便的避免了windows和ubuntu的切换而浪费的时间。Xshell只是做为windows下的窗体,方便窗口间的切换。
4.2 samba环境搭建
4.2.1 安装samba与smbfs
$ sudo apt-get install samba
$ sudo apt-get install smbfs
4.2.2 建立共享的文件夹
对于网络映射可见的文件夹目录,放在这文件夹里面的文件可被访问到。
$ mkdir /home/sammor/share
$ chmod 777 /home/ray/share #设置文件夹的权限为777
4.2.3 备份并编辑smb.conf容许网络用户访问windows
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
$ sudo gedit /etc/samba/smb.conf
搜寻如下一行文字
; security = user
改成:
$ security = user
$ username map = /etc/samba/smbusers
将下列几行新增到文件的最后面,假设容许访问的用户为:nancy。而文件夹的共享名为 share
[Share]
comment = Shared Folder with username and password
path = /home/sammor/share
public = yes
writable = yes
valid users = sammor
create mask = 0700
directory mask = 0700
force user = sammor
force group = nogroup
available = yes
browseable = yes
找到[global]把 workgroup = MSHOME 改成:
workgroup = WORKGROUP
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936
上面假设新增长的用户名为nancy,故如今须要添加该用户
$ sudo useradd nancy
$ sudo smbpasswd -a nancy
$ sudo gedit /etc/samba/smbusers
在新创建的文件中加入下面的一行并保存
nancy = "network username"
删除网络上用的账号的命令把 -a改成-x
sudo testparm #若是显示出以前设置的信息,即成功设置上了
sudo /etc/init.d/samba restart #有可能找不到对应的文件,但此时已经成功启动了
4.2.4 win7/xp中建立映射网络
计算机—>右击“映射网络驱动器”—>填写虚拟机中的IP及对应的共享 的文件share,肯定以后须要填写网络上的账号和密码(即上面建立的为nancy用户),若是顺利的话,能够链接上,这时在此映射文件夹里面,建立和修 改的文件能够在ubuntu系统里面看到了。
后面的三行是为了防止出现中文目录乱码的状况。其中根据你的local,UTF-8 有可能须要改为 cp936。
4.3 源码导入eclipse
4.3.1 设置eclipse的相关配置
进入eclipse的安装目录中,找到eclipse.ini文件,修改该文件中的。
-Xms40m
-Xmx256m
-XX:MaxPermSize=256m
为能支持Android源码查看,改成:
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
4.3.2 提取android对eclipse的支持的配置文件
从android源码的路径中找到
把.classpath复制到源码的根目录上,为了导入eclipse做准备。
而对于android-formatting.xml、android.importorer,导入eclipse中。
打开eclipse,在eclipse中
一、 Window > Preferences > Java > Code Style.
二、 Formatter > Import to import
android-formatting.xml
.
三、Organize Imports > Import to import
android.importorder
.
4.3.2 修改.classpath
对于eclipse,每个工程都对应着一个.classpath,而android源码中,也已经准备好了该文件。但这里需 要对.classpath文件进行肯定每个目录路径是否存在,不然可能会导入工程时产生源码的影响。由于工程还未进行编译,帮这里面主要不存在的路径是 out/目录。
4.3.3 建立工程,导入源码
使用eclipse的java project的方式进行项目工程建立,而不是用Android project的方式(该方式会破坏源码的结构)。
一、 File > New > java project.
二、 取工程名,并引导指定源码存在的路径。
三、 直接Finish进入,并等待彻底结果。
4.3.4 源码的修改
当外面repo sync去更新码时,须要在eclipse进行同步变化,则须要:
一、Window > show View > Navigator
二、在该视图下面,右击对应的工程名字
三、点击refresh进行更新
reference:
一、android源码:
http://source.android.com
二、samba安装参考:
http://forum.ubuntu.org.cn/viewtopic.php?t=20852