android粉粉日记源码,【白水日记】git submodule在Android

我们平时开发的时候,经常要引用其他库,组件,有的时候是我们自己的,有时候别的项目组的,有时候是第三方的。放在我们自己项目里的组件模块最好修改,我分一个文件夹就隔离了,大一点的分一个Module,甚至封装一个jar,需要资源的话,使用aar,放到maven服务器上,再甚者可以放到jcenter上,直接远端依赖,但也有一些问题,aar不够灵活,每次修改都需要打包上传aar,而且涉及到snapshot和正式包的管理,比较麻烦,本地module虽然足够灵活,却不能很方便的给他人使用,那么有没有一款可以折中的思路呢?这种情况不妨考虑git submodule

只要项目使用git管理,就可以集成git submodule,相当于在项目里集成了另一套独立的git项目,甚至可以再次套娃,不过不推荐多层嵌套git submodeule,多层套娃只会让管理更加混乱,下面简单介绍一下如何使用

首先创建一个空的项目:为了方便管理submodule,推荐创建一个空文件夹,例子里叫submodules

2f9cdc7211d1

之后再创建一个子工程,并上传到远端git服务器

2f9cdc7211d1

回到主工程的根目录,将子工程下载并绑定

git submodule add https://github.com/******/BaseSubModule.git submodules

这里 git submodule add 指的是添加submodule,后面第一个参数跟的是子工程的git地址,第二个是添加的位置,这里放到刚才创建的submodules文件,如果有多个submodule可以再创建一个目录进行区分管理

下载完成之后,就能看到一个新的项目

2f9cdc7211d1

每次更新只需要执行git submodule foreach git pull,更新所有submodule代码即可,环境就搭建完成了,之后看看一些细节

上文提到了,git submodule是一个单独的git项目,因此代码的分支管理并不跟随主项目分支切换而切换,子项目切换分支,需要cd到对应的目录,手动切换(如下图),在实际开发中,并不推荐子项目创建分支,一个master分支即可,不然会造成管理上的混乱

2f9cdc7211d1

关于修改更新,子项目因为本来也是一个单独的项目,修改时直接打开即可,修改到远端之后,直接push到远端,切换到主工程再pull下来即可,需要注意的是,下次主工程push代码的时候,对应的submodule hash也会变化,如果只是为了更新submodule代码,也会单独产生一条git提交记录

2f9cdc7211d1

submodule更新频繁的时候,会产生很多额外的提交记录(算是一个缺点)

2f9cdc7211d1

另外要注意,一些打包平台是否支持此种方式,而且他们每次拉取git submodule代码的时候,是否使用了你提交的submodules,还是取的submodule最新的代码,忽略了你的提交记录,我本人曾经就碰到过基础架构组使用的后者方式进行打包,导致代码不正确的情况

最后简单讲一下submodule的使用吧,虽然代码已经下载并绑定到本地工程了,但是默认是不能调用的,需要做一点简单的配置

先看.gitmodules文件,这个是添加submodule时默认生成的,里面配置了项目的地址,后续更改地址直接修改即可

2f9cdc7211d1

2f9cdc7211d1

我们首先要修改setting,注意projectDir地址要带上我们刚才创建的文件夹

2f9cdc7211d1

2f9cdc7211d1

之后在build.gradle里添加应用即可使用submodule里的代码资源

2f9cdc7211d1

要引用多个项目也类似

总的来说,git submodule算是比aar更轻量的解决方案,省去了上传和版本号管理的麻烦,除了要注意打包平台之外,整体体验是不错的,尤其是一个模块频繁更新迭代,而外部又有多个项目依赖时,可以作为一种比较合理的方案尝试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值