浅读Android客户端源码流程

Android源码

阅读本文大约需要10分钟

拉取源码常用git命令介绍

克隆项目至本地

以GitHub中的UnitPro(为演示的例子)为例,选择Clone with HTTPS方式复制克隆地址,不选择SSH方式的原因见HTTPS和SSH的区别和使用

获取到https url后,在合适的位置,打开Git Bash窗口,输入命令”git clone ‘https url’ “即可克隆指定项目到本地。

Clone


HTTPS和SSH的区别:

在管理Git项目上,可以通过https url或ssh url来克隆项目至本地。

使用https url克隆对初学者较为方便,复制https url然后到Git Bash里面直接用clone命令克隆到本地即可,但每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。

而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,若想要使用SSH url克隆,必须是这个项目的拥有者。否则是无法添加SSH key的,另外ssh默认fetch和push代码都不需要输入账号和密码,也可以另外进行设置成需要输入的方式。

这就是最开始总是以为没有权限拉取项目源码的原因。


常用git命令

命令 功能
git branch -a 查看远程仓库所有分支
git branch 查看所有本地分支
git branch -d + 分支名 删除指定分支
git checkout +分支名 将当前本地分支切换至指定分支
git checkout -b +分支名 新建本地分支,相当于git branch +分支名 和 git checkout +分支名
git checkout +文件路径 还原指定文件与远程版本一致
git status 查看当前分支的本地修改情况
git fetch 从远程获取最新版本到本地,不会自动merge
git pull 从远程获取最新版本并合并到本地, 相当于git fetch 和 git merge
git merge 合并分支
git add 把当前目录下的所有文件加入暂存区域
git commit -m “msg” 添加代码提交信息,此时暂未上传到远程
git commit -a -m “msg” 将当前新增信息加入暂存区,并添加提交说明信息,相当于git add + git commit -m “msg”
git push 将本地新增内容上传到远程服务器
git stash 保存当前操作,不想commit当前操作,且需要切换分支时可以暂存当前操作。git stash save some_info,指定some_info为暂存信息添加备注
git stash -list 查看所有暂存的信息
git stash pop stash@{num} 恢复序号为num的暂存信息到本地,num可通过list命令查询,恢复完成后,list中就删除了该记录
git stash clear 清空所有暂存记录

此处仅罗列常用的简单命令,详细使用可以参考Git-Book,不想使用命令也可以使用Git-GUI 或 source-tree 或 GitHub 等图形界面工具。

正确配置Android工程

在Android Studio中Open上一节中clone下来的项目,需要说明的是,并不是所有的项目都会附带本地项目的依赖,大部分项目依赖均可自动从远程仓库中compile。

但有一些项目可能会依赖到一些本地库,就需要先将依赖的库配置好。

为了演示需要,我在UnitProanother分支添加了Logger的本地工程依赖。

本地工程依赖的好处:

通过compile project导入本地工程,可省去打jar包或发布的重复性流程,被依赖工程在本地修改后,所引用的工程无需修改(若引用jar包则需重新导入)即可自动更新修改。

配置步骤大致如下:

1.同上节,将该工程clone到本地,切换到another分支

2.查看app下gradle依赖所依赖的本地project,即使用compile project配置的工程

3.打开settings.gradle查看上步工程名所对应的路径配置

4.根据本地依赖project路径配置好工程

Android签名证书SHA1

在开发调试时,从Android Studio或者Eclipse中直接运行的APP在打包时使用了开发工具默认的开发版(debug)签名文件keystore,开发版签名文件对应有唯一的SHA1。

SHA1的获取命令为:keytool -list -keystore debug.keystore

操作如下:

sha1

备注:对签名的了解较少,希望后期能有进一步了解。

Android源码定位技巧

熟悉命名

熟悉客户端大致功能点及了解源码的基本Acitivity和Fragment命名(命名即可)

直接定位

若能从功能点猜测出对应界面的Activity或Fragment,则直接定位到该类,从左侧Project选择或Ctrl+Shift+R搜索定位

流程定位

若对命名不熟悉,则可按照以下流程及方法定位

android代码定位流程