Android studio 统一版本依赖, 避免build不同依赖版本冲突

Android studio3.0中,

compile依赖关系已被弃用,被implementationapi替代,

providedcompile only替代,

apkruntime only替代。

 

Android gradle3.x中 implementation 、compile、api区别:

compile与api

二者等同,无区别

implementation与compile或implementation与api

implementation编译的依赖只作用于当前的module。即APP module依赖了core module,core module中使用implementation编译的三方库(如glide)只对core module起作用,app module中无法使用该三方库(glide);如果core module 使用implementation依赖了base module,则APP module中无法使用base module。

建议
Google IO 相关话题的中提到了一个建议,就是依赖首先应该设置为implement的,如果没有错,那就用implement,如果有错,那么使用api指令,这样会使编译速度有所增快。

那为什么要这么做呢?
答案是: 1. 加快编译速度。2. 隐藏对外不必要的接口。

为什么能加快编译速度呢?

Android studio 统一版本依赖, 避免build不同依赖版本冲突_第1张图片
这对于大型项目含有多个Moudle模块的, 以上图为例,比如我们改动 LibraryC 接口的相关代码,这时候编译只需要单独编译LibraryA模块就行, 如果使用的是api或者旧时代的compile,由于App Moudle 也可以访问到 LibraryC,所以 App Moudle部分也需要重新编译。当然这是在全编的情况下。

 

上面介绍了一些相关的知识,下面来介绍下,版本依赖, 避免build不同依赖版本冲突的问题。

首先,在项目project下创建新文件:config.gradle,与setting.gradle是同级的,里面定义的是一些版本信息.如:

Android studio 统一版本依赖, 避免build不同依赖版本冲突_第2张图片

ext是自定义属性,把所有关于版本的信息都利用ext放在另一个自己新建的gradle文件中集中管理。

 

  • 其次在根目录的build.gradle文件中添加内容(apply from:”config.gradle”),如图:
    这里写图片描述

    加上这一行代码,意思就是所有的module都可以从这个(config.gradle)配置文件里读取内容。

  • 在app(module)目录下的build.gradle文件中使用如下:

android {  
          compileSdkVersion rootProject .ext.android.compileSdkVersion
          buildToolsVersion rootProject .ext.android.buildToolsVersion
          defaultConfig {
              applicationId rootProject .ext.android.applicationId
              minSdkVersion rootProject .ext.android.minSdkVersion
              targetSdkVersion rootProject .ext.android.targetSdkVersion
              versionCode rootProject .ext.android.versionCode
              versionName rootProject .ext.android.versionName
          }
          ...
      }  
      dependencies {
          ...
          compile rootProject .ext.dependencies[ "design"]
          compile rootProject .ext.dependencies[ "appcompat-v7"]
          compile rootProject .ext.dependencies[ "recyclerview-v7"]
          ...
      }

以上基本解决了版本统一管理,依赖冲突问题。

 

你可能感兴趣的:(导入bug)