Linux下使用Repo和Git下载Android源代码并编译

三个概念滤清一下:

git是目前世界上最先进的分布式版本控制系统,通过git pull拉取服务器上代码的更新到本地 ,通过git push提交代码到远程服务器;

repo:repo负责多个git库的管理工作;

repo init:从远程将代码的清单库拉下来(想成,店家收到用户的下单后,将清单提交给仓库管理者)

repo sync:同步清单库里的东西(想成,仓库管理者按照清单取货配送给买家)

repo start master--all (创建并切换分支,可以理解成买家取货后将货放在了一个名字叫master的储物柜里 ) 这里master只是分支名,可以随便起别的名字

gerrit是一个管理库的图形化的界面,简单的操作;提供代码审核机制。

参考:repo和Git的关系

1. ssh-******生成git ssh公钥:

l 简要介绍SSH

SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell。SSH登录是需要用户名和密码的,要实现无密码登录,就需要创建SSH **(ssh key),SSH **可以认为是和另一台电脑通信时的唯一的识别证,SSH **对可以让我们方便的登录到 SSH 服务器,而无需输入密码。GIT源代码管理就是使用此种安全机制,本文本将介绍SSH KEY的生成过程。

l 何谓公钥:

①  很多服务器都是需要认证的,ssh认证是其中的一种。在客户端生成公钥,把生成的公钥添加到服务器,你以后连接服务器就不用每次都输入用户名和密码了。

② 很多git服务器都是用ssh认证方式,你需要把你生成的公钥发送给代码仓库管理员,让他给你添加到服务器上,你就可以通过ssh*地拉取和提交代码了。

 

  •  本地生成公钥 

① 生成公钥命令:ssh-******  

② 接着会确认存放公钥的地址,默认就是上面说的路径,直接enter键确认

③ 接着会要求输入密码和确认密码,如果不想设置密码直接不输入内容 按enter键

如图:

Linux下使用Repo和Git下载Android源代码并编译

(所以这里一路回车到底)

 

参考网址:

查看本机ssh公钥,生成公钥

初次安装git配置用户名和邮箱

2. 添加public key到gerrit

  • 查看ssh公钥方法:

查看公钥命令:cat id_rsa.pub或者vim id_rsa.pub

我当时的查看命令是: cat  /home/ubuntu/.ssh/id_rsa.pub

复制内容。进入 gerrit->settings->SSH Publick keys->add key, 粘贴公钥内容。点击add。

保证能使用gerrit获取代码。

公钥添加完成后,在图形化界面里面执行一下ssh-add使公钥生效(ssh远程命令行里不需要这样)。

如果遇到Permission denied (publickey). 那可能是你没有添加**到ssh-agent.  尝试ssh-add id_dsa. 在add的时候如果遇到Could not open a connection to your authentication agent. 尝试ssh-agent bash. 然后再 ssh-add.  add 成功后再run ssh -p 29418 @gerrit......com 应该就可以看到 welcome的提示了。

参考网址:gerrit SSH KEY 的配置

3. repo安装方法

① 下载repo

git clone ssh://[email protected]:29418/repo_tool

② 根目录下创建.bin文件夹

mkdir ~/.bin

③ 把repo_tool下的repo文件复制到~/bin下,

cd git-repo

cp repo ~/.bin/

④ 修改权限

chmod 755 repo,赋予可执行权限

或者chmod a+x ~/.bin/repo

⑤ 配置环境变量(也可配置为永久的)

PATH=~/bin:$PATH

⑥ 编辑repo文件,默认前面有两行,这两行是为了下载130.181上的repo仓库,请务必注意:

REPO_URL='ssh://[email protected]:29418/repo'

REPO_REV='master'

⑦ 当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:当前用户(global)配置(--global中存储了提交用户的email和用户名,手动设置指令如下)

git config --global user.name "myname"

git config --global user.email  [email protected]

我电脑的配置是:

git config --global user.name 我的名字拼音

git config --global user.email 邮箱

⑧ 初始化

git config --global review."gerrit.huaqin.com: 192.168.130.181:29418".username 你的工号

注意第三句的gerrit.huaqin.com:8081使用你正在使用的gerrit服务器(不明白干嘛的)

⑨ 使用命令将高通平台代码拉下来

repo init --no-repo-verify -u ssh://[email protected]:29418/manifest -m XLAB_QCOM_MSM8937_64_DEV.xml  (初始化仓库)

⑩ repo sync -j4(-j8也行,只要你不怕电脑卡)(同步源码到本地)

11 拉完后创建分支

repo start master --all

参考网址:

Repo工具的使用

自己动手编译Android源码(超详细)

Linux下 使用Repo和Git下载Android源代码并编译

4. uerdebug版本编译方法

在编译之前需要参考:安装Ubuntu12.0.4LTS/14.045 LTS 编译Android6.0/7.0环境将编译环境先配好,

可能会遇到的错误:依赖包缺失,依赖包损坏,文件缺失等问题,其中依赖包损坏问题比较难缠,这是我=当时出错的截图:

 

E: Unmet dependencies. Try using -f.

E: Some packages could not be authenticated

试了很多网上的帖子,最后重装了系统,哭瞎

Linux下使用Repo和Git下载Android源代码并编译

Linux下使用Repo和Git下载Android源代码并编译

在配置编译环境时,你可能想知道两个东西的概念化理解:

 

下面介绍一下编译步骤

① 初始化编译环境

source build/envsetup.sh 

② 选择编译终端类型:

lunch zqp1168_p2lite-userdebug

③ 开始编译

make -j8 2>&1 | tee build.log

④ 编译好的系统刷入手机

l 查看out目录

查看是否生成 system.img boot.img recovery.img userdata.img等需要的文件

⑤ 刷入手机

进入 system.img所在目录

l 进入刷机模式: adb reboot bootloader

l fastboot format cache

l fastboot format userdata

⑥ 刷image进手机:sudo fastboot -w flashall  

或者分别刷入 fastboot flash recovery recovery.img

fastboot flash  boot boot.img

fastboot flash system system.img

fastboot flash userdata userdata.img 进入手机

5.常用版本控制器的对比

版本控制:SVN和GIT的一些使用感受

版本控制工具的比较几种常用的版本控制系统优缺点比较

几种常用的版本控制系统优缺点比较