Skip to content

1、通过 submodule 引入框架

imyyq edited this page Sep 21, 2020 · 3 revisions

要么通过远程仓库引入框架,要么通过 submodule 引入框架源码,二选一,要通过远程仓库引入,详见: Wiki - 0、通过远程仓库引入框架,如果是你是通过远程仓库引入的,那么本篇和(Wiki - 2、通过 submodule 引入框架 - 基本配置)都不用看了。

如果你对 AS 的项目结构熟悉的话,就知道从源码结构上看,框架并不是一个完整的 Android 项目,如下:

图1

对项目结构不熟悉的,可以看下我的专栏:AS 系列(1):项目的结构,(好像打了个广告 ヽ( ̄▽ ̄)ノ)。

所以不能直接通过 AS 的 File | Open... 打开框架的,否则会报错误:

Plugin with id 'com.android.library' not found

源码方式引入框架,可采用 Git 子模块的方式,即 git submodule。

1、初始化你的项目

首先你的项目得是一个 git 仓库,即有没有 .git 这个隐藏的文件夹,如果没有,你需要通过 git init 初始化你的仓库,然后修改你的 .gitignore 文件,该文件可直接拷贝本框架的。

然后执行 git commit 指令,完成你的第一个提交。

2、引入框架

使用 Git Bash 或命令行(使用命令行的前提是安装 Git 时支持了系统命令行,一般默认安装选项都是支持的)进入要引入框架的目录,即你的项目根目录,执行以下命令:

git submodule add git@github.com:imyyq-star/MVVMArchitecture.git

后缀 git@xxxxx 是此仓库的地址,建议先把框架 Fork 到你的 Github 仓库中,根据 Fork 后的仓库地址再执行此命令,这样一来框架就是你的了,框架出现问题你修复后,或者你封装了很好的功能,可以提合并请求给我,或者从我的 GitHub 仓库中获取更新到你的仓库中,更加方便

上述命令即可将框架作为子模块引入,即本框架已经成为你项目仓库的子仓库了,此时你的项目目录应该如上图完整的 Android 项目一样。后续如果本框架有更新,你可以先把更新合并到你 Fork 后的仓库,或直接从本框架获取更新。

子仓库的更新和普通仓库更新没什么区别的,都是通过 git pull 命令。这部分是 git 的使用知识。

3、源码更新的问题

我会不定期保持对框架的更新和修改,你要是保持更新的话,也许需要同步修改下代码,比如 GlobalConfig.gIsBetaSaveLog 字段名字改成了 gIsSaveLog,请自行斟酌是否更新源码到最新,建议保持最新,前期可能有些小修补,但不会影响稳定性。

你的项目将框架作为子仓库引入后,如上图的完整项目结构,框架文件夹显示:

MVVMArchitecture @ b36fbbd

@ 后面的符号就是当前项目所关联框架的 commit id,所以如果你把框架更新到最新了,想反悔,都可以找到该 id 进行恢复的,这块也是 git 方面的知识。

4、引入完成后

引入完成后,你的项目 git 仓库会出现两个文件:.gitmodules,MVVMArchitecture,这两个文件是要被纳入仓库中管理起来的,每次更新了框架的代码,MVVMArchitecture 文件将会变化,该变化需要被仓库管理起来。

具体这两个文件是什么作用,请自行查阅 git 子模块是如何使用的。

现在,整个框架的源码都拷贝下来了,下面我们进行一些基本的配置,就可以使用框架了。