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键
如图:
(所以这里一路回车到底)
参考网址:
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
参考网址:
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
试了很多网上的帖子,最后重装了系统,哭瞎
在配置编译环境时,你可能想知道两个东西的概念化理解:
- ADB:一个debug工具,参考 ADB 简介及其使用和Android中ADB用法总结
- fastboot:一个烧录工具,android开发笔记之fastboot的使用
-
adb 和 fastboot 的基本用法详解
下面介绍一下编译步骤
① 初始化编译环境
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.常用版本控制器的对比