自己一步一步来的,现在已经成功拉到代码啦。^_^
操作系统:Ubuntu14.04
需要提前准备的工具:git,repo,相关的lib包,一定要有网
所有的操作都是在ubuntu的命令终端中进行的。
实现步骤:
1. 打开命令终端,找不到或者不知道快捷键的,请点击屏幕左上角的第一个图标,再弹出框输入关键字搜索(英文环境输入“Terminal“,中文环境输入“终端“)。
2. 安装repo。在终端中使用sudo apt-get install repo命令安装repo软件。
3. 安装git。
安好repo后如果直接使用repo来拉取代码可能会报错:
那么需要再安装一个git工具(这个工具可以用来检查本地代码是否改动,查看具体改动以及提交代码,这里不扯了)。在命令行中使用sudo apt-get install git来安装git,
使用sudo的原因是不是root的用户没有权限使用这个命令。这时候需要输入你的用户密码,然后就开始安装了:
在安装过程中可能一次通过,也可能会报错。一般是需要一些依赖的lib库文件。如果下载git失败的话可以尝试下列命令来更新lib:sudo apt-get update
完成过后再执行一遍sudo apt-get install git一般就可以了。
4. 使用repo命令拉取google服务器上面的代码,在终端中进入你新建的代码的空白目录,然后依次执行下面命令。就两个:
repo init -u https://android.googlesource.com/platform/manifest
repo sync
1)第一条是获取目前最新的软件版本的代码,执行完了再执行第二条就可以更新该项目全部的代码。
如果想特别拉某一个版本的代码,那么就在manifest后面使用 -b 参数加上你想拉的项目名。比如我想拉android-6.0.0_r1的,第一条就换成:
repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.0_r1
然后再执行repo sync命令
2)如果觉得全部代码太大(加起来有几十个G,比魔兽世界大多了),为了节约时间,或者你只对某一个模块感兴趣,那么可以只拉取某个模块的。
比如你想看关于蓝牙(Bluetooth)的源码,那么就打开你刚才在终端创建的项目的目录,执行了repo init命令后会生成一个名为.repo的文件。
使用ls -al命令可以找到它。使用gedit .repo/manifest.xml命令来查看它的内容,然后搜索关键字bluetooth:
可以看到查询出来的bluetooth的分支全名是path="packages/apps/Bluetooth"。
然后回到终端,在刚才repo sync后面加上这个path的全名就可以拉取了:
repo sync packages/apps/Bluetooth
5. 对于大陆的网络,而且是未使用VPN,自己的电脑无法访问到google官网的,上面第4点就执行不了了。会卡在repo init的地方,然后提示连接超时。
Getting manifest ...
from https://android.googlesource.com/platform/manifest
fatal: unable to access 'https://android.googlesource.com/platform/manifest/': Failed to connect to android.googlesource.com port 443: Connection timed out
网上有朋友说修改/etc/hosts文件,将google服务器的网址和相关IP加入其中,我试了一下,没有用。
这种情况我们可以使用google代码的镜像网站omapzoom(http://git.omapzoom.org/)来拉取android项目源码。具体做法是:
1)修改repo init命令,将后面的服务器名由google替换成omapzoom:
repo init -u git://git.omapzoom.org/platform/manifest -b android-6.0.0_r1
这时候再执行repo sync命令还是会失败!因为下载下来的manifest文件中仍然是默认以google作为代码源的。
2)修改manifest文件。使用gedit .repo/manifest.xml命令打开manifest文件,找到顶部设置服务器的地方,就是fetch的属性值,将其设置为omapzoom的网址:
然后保存该文件,回到命令终端,重新使用
repo sync命令或者
repo sync packages/apps/Bluetooth就可以了。
注意:如果执行完一次repo init失败后,再次执行repo init可能会失败的!因为每次执行repo init命令都会在当前目录下生成一个.repo文件夹,该文件夹是隐藏的!
正确做法是:如果要再当前目录重新设置服务器源拉取代码,必须使用rm -rf .repo命令删除这个隐藏的.repo文件夹,然后再使用repo init才会成功!