Android项目中独立Git项目分库后的编译调试时Gradle的配置

553 阅读2分钟

基于AS开发项目,对于特定的功能模块,往往抽取成独立的库进行管理,然后上传到Maven库中,通过Gradle依赖的方式进行引用。

其优势体现在:
1,独立的Git项目库,模块功能,及职责界定清晰;
2,外部使用方一般无须关注此Git项目库的具体实现和逻辑细节,只需按照对应的对外暴露的方式调用即可;
3,一般此类Git项目库有专门的管理员,和技术人员实现其功能的迭代和维护更新,以及对应的版本管理;
4,使用方只是通过Gradle引用, 此Git项目库在安全性上有进一步保障。

但在实际开发中,有时候需要对此Git项目库进行修改,对应需要和主工程进行联调测试等,此时如果每次修改此Git项目库代码后,更新到Maven库,然后再在主工程更新对应的Maven版本依赖,无论是实现过程,还是实际调试等,都过于繁琐。

Gradle提供了特定的语法结构,可以在调试时直接类似于引入此项目其他模块的方式引入此类独立Git库。

具体语法结构为:
settings.gradle文件:

include ':cornlog'
project(':cornlog').projectDir = new File('../CornLogSDK/cornlogsdk')

主工程build.gradle文件:

dependencies {
    ......

    api(project(':cornlog')) {
        exclude group: 'com.abc.mlog', module: 'mlog'
    }

     .......     
}

sync后,可以发现此独立Git项目库会出现在当前主工程左侧项目导航视图中,可以直接修改、编译、调试等。类似于主工程项目内其他独立模块效果。

但Git commit等,仍然是分开的,当前主工程的Git提交依然只对主工程有效,需要提交此独立Git项目库需要到其独立Git本地工程中提交即可(代码与主工程视图中修改此独立Git项目库代码是同一份)。


另外,如果有一些特殊的需求时,还可以通过配置独立Git库打包到本地,然后在主工程中将对应本地目录作为工程仓库源之一,可以避免频繁向Maven服务器上推送开发调试阶段SNAPSHOT版本。

具体配置如下:

独立Git库:

afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                ....
                // 向本地目录发布构件
                snapshotRepository(url: uri('/Users/corn/localRepo'))
                ....
            }
        }
    }
}
主工程:

allprojects {
    repositories {
        //本地仓库
        maven {
            url '/Users/corn/localRepo' 
        }
        ....
    }
    ....
}