zoukankan      html  css  js  c++  java
  • Gradle里面的依赖implementation和api的真正理解

    Gradle新版本里面依赖的写法支持implementation和api,下面简单解释两者的区别:
      implementation 表示依赖,即 只依赖不打包进来。
      api 表示打包,即 不仅依赖还打包进来,这样上层就不用重复依赖。
      注意:这里的打包是便于理解,是指打包依赖关系而不是打包源代码,也就是说将依赖暴露给上层。
      下面举例说明:
        app主模块下的依赖:
          dependencies {  implementation project(path: ':home')  } //依赖home模块,使用implementation。
        home模块下的依赖:
          dependencies {  api project(path: ':mvp')  } //使用api,表示将mvp模块引入并打包进home模块。因为mvp模块含v7包,home模块也含v7包。
        mvp模块下的依赖:
          dependencies {  api 'com.android.support:appcompat-v7:28.0.0'  } //使用api,表示将v7包引入并打包进mvp模块。
      相当于:
        app主模块下的依赖:
          dependencies {  
            implementation project(path: ':home')  
            implementation project(path: ':mvp')
            implementation 'com.android.support:appcompat-v7:28.0.0'
          } //依赖home模块,和home模块需要显示引入v7包一样,app引入home模块后还需要显示引入mvp模块和v7包。
        home模块下的依赖:
          dependencies {  
            implementation project(path: ':mvp') 
            implementation 'com.android.support:appcompat-v7:28.0.0' 
          } //依赖mvp模块.因为mvp模块引入v7包使用的implementation,也就是只给自己使用,没有将v7包打包进mvp模块,所以home模块还要引入v7包。
        mvp模块下的依赖:
          dependencies {  
            implementation 'com.android.support:appcompat-v7:28.0.0'  
          } //依赖v7包,使用implementation,只依赖v7进mvp模块,不打包向上提供
  • 相关阅读:
    JAVA火星坐标系、百度坐标系、84坐标系相互转换工具类
    MySQL查看数据库连接数
    GmSSL制作国密算法自签证书和 HTTPS 配置
    mysql占用内存过多
    Redis 缓存穿透、击穿、雪崩
    Linux清理入侵痕迹
    helm v3
    docker常见的网络
    fuser、lsof的使用
    find命令-exec选项,find命令配合xargs
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/11287400.html
Copyright © 2011-2022 走看看