【写给自己】项目组件化,修改远程依赖库的流程,特殊情况处理。

特殊情况

除了第一种正常的单层依赖。可能你项目依赖一个库A,那个库A内部还依赖另一个库B。如果不跑单元你想在项目中直接修改库B这种情况怎么处理?
栗子:
项目A依赖于库B,库B依赖于库C,库D,库PullToRefresh。
这时你要修改PullToRefresh库,就不能单纯的源码引入库B,在源码引入库PullToRefresh了。

处理方案:
1:将对应的库的源码Down下来,记录下放置的路径。

2:在项目的setting.grade文件中,进行PullToRefresh库的源码引入

include ‘:PullToRefresh’
project(‘:PullToRefresh’).projectDir = new File(‘../CommonProject/Android-PullToRefresh’)

***3:这时候因为PullToRefresh库是库B依赖的库,不能直接源码引入项目A中,所以要做如下操作。
将库B依赖的库,全部写入到项目A的build.gradle文件中的dependencies中,并将要修改的PullToRefresh库,源码引入。

    compile 'com.beibei.android:ProjectC:1.0.2'
      compile 'com.beibei.android:ProjectD:1.0.0'
//    compile 'com.beibei.android:PullToRefresh:1.0.6'
    compile project(':PullToRefresh')

改完dependencies,下一步为了解决重复引用的问题,需要修改build.grade中的configurations文件

configurations {
        provided
        all*.exclude group: 'com.beibei.android', module: 'PullToRefresh'  
    }

这个的意思是取消依赖库中的依赖。就是取消库B中,对于com.beibei.android.PullToRefresh的依赖。这样就能成功的跑起来了。
正常操作就OK。*

4:这样就能本地修改代码了。改好需求后,测试完毕代码没有问题后,按日常的git流程,提交到PullToRefresh对应分支中。

5:改对应的PullToRefresh的Module的版本号

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "string"              authentication(userName: "string", password: "string")
            }
            pom.project {
                packaging 'aar'
                groupId 'com.beibei.android'
                artifactId 'PullToRefresh' //LibA
                version '1.0.7' //改版本号从1.0.6升级成1.0.7
            }
        }
    }

6:上传到repository仓库中,进入对应项目的目录中运行gradle脚本

//uploadArchives
grade clean upload 

7:大功告成,到需要引用PullToRefresh工程的中,修改build.gradle中的引入代码,记得提升版本号。这里写代码片

  compile 'com.beibei.android:PullToRefresh:1.0.7'//版本号升级到1.0.7拉取到对应版本的代码。
  //  compile project(':PullToRefresh')

好了特殊情况也处理好了。牢记

你可能感兴趣的:(android开发,组件化,gradle)