repo 切换android分支,Gradle Repo:一个能管理多个Git仓库,又能快速切换分支的Gradle插件...

背景和问题

项目组件化过程中,会根据App框架、业务情况划分出各个独立的模块。通常把各个模块的代码管理分开,各自有独立Git仓库。

这样有个好处是可以按需clone部分模块的代码,再组装成一个可运行的工程。比如,业务组的同学开发某个Feature的时候,只需clone业务层部分模块的代码,不需要中间层、基础层方面的模块代码(业务层模块引用中间层、基础层模块打包上传Maven的aar)。

但在实际操作中产生的问题:

创建创建工程初期,怎么方便的clone各个Git仓库 ?手动一个一个clone显然不合适。

在工程目录结构中,各模块势必会处在根项目中,怎么避免在提交根项目时把各模块也提交了?使用 git submodule ?

38f600754419

根项目和各模块

如何从Feature A分支切换到Feature B分支 ?Android Studio 提供了Common branch的切换功能。但不同分支对应的模块不一时,是无法顺利切换过去的。

38f600754419

Common branch

介绍 Gradle Repo

Gradle Repo是基于Gradle写的一个插件,用于管理多个Git仓库,支持方便快捷的切换分支。在根项目中会有一份配置清单repo.xml,用于描述模块来源、工程结构以及依赖关系。

主要做了三件事情:

从各个远程仓库clone代码到指定目录路径下。通过Git的exclude而不是submodule。

动态include模块,并模块间的依赖关系。

切换至指定分支。

使用方式

分别在根项目settings.gradle和build.gradle引用gradle-repo对应的插件

settings.gradle:

buildscript {

...

dependencies {

classpath 'com.eastwood.tools.plugins:gradle-repo:1.0.0'

}

}

apply plugin: 'gradle-repo-settings'

build.gradle:

buildscript {

...

dependencies {

classpath 'com.eastwood.tools.plugins:gradle-repo:1.0.0'

}

}

apply plugin: 'gradle-repo-build'

在根项目下创建一个repo.xml配置清单。例如:

38f600754419

repo.xml配置清单

Repo 配置清单

repo.xml 样例

branch="master" >

project 节点

必须且只有一个project节点,用于描述根项目。

origin : 远程Git仓库URL

branch: 分支名称

module 节点

可以定义多个module节点,每个module表示一个具有独立Git仓库的模块。

name: 模块名称,目录名称需一致且唯一;必须项。

local: 相对于根项目的路径,clone的路径为 root project / local / name,缺省时路径为 root project / name。

origin: 模块的远程Git仓库URL,支持相对路径。

branch: 模块分支名称。缺省时,同project节点的branch。

include 节点

是project的子节点,可以定义多个include节点。用于表示哪些模块和根项目同一个git仓库。

name: 模块名称

dependencies 节点

是module的子节点,可以定义多个dependencies节点。仅用于描述模块于模块之间的依赖关系。

name: 模块名称

Android Studio 插件 Gradle Repo

方便对repo.xml修改后进行sync和绑定远程git仓库操作。

38f600754419

Gradle Repe插件

38f600754419

Repe Sync

常见问题

是不是不需要在settings.gradle中include模块了 ?

是的,插件会自动include模块。

怎么切换到其他Feature分支?

只需修改一下repo.xml project 中的branch,然后同步一下即可。

注意!修改前确保代码已经commit或stash。尽量不要使用Android Studio右下角那个Git分支管理工具。

结语

项目已经上传至GIthub,可直接clone体验一下,打开时会自动clone其他两个模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值