zoukankan      html  css  js  c++  java
  • android gradle依赖:implementation 和compile的区别

    LibraryA 中引用了 LibraryC 的库,如果对 LibraryC 的依赖用的是 implementation 关键字。 如下:

    1.  dependencies {
    2. . . 
    3. implementation project(path:':libraryC')
    4.  }

    那么LibraryC 中的接口,仅仅只能给 LibraryA 使用,而我们的 App Moudle 是无法访问到 LibraryC 提供的接口的,也就是将该依赖隐藏在内部,而不对外部公开。这就是implementation关键字的作用。

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

    为什么能加快编译速度呢?
    这对于大型项目含有多个Moudle模块的, 以上图为例,比如我们改动 LibraryC 接口的相关代码,这时候编译只需要单独编译LibraryA模块就行, 如果使用的是api或者旧时代的compile,由于App Moudle 也可以访问到 LibraryC,所以 App Moudle部分也需要重新编译。当然这是在全编的情况下。

    还不熟悉 2.x 版本依赖的可以看看下面的说明,括号里对应的是 3.0 版本的依赖方式。

    compile(api)

    这种是我们最常用的方式,使用该方式依赖的库将会参与编译和打包。
    当我们依赖一些第三方的库时,可能会遇到com.android.support冲突的问题,就是因为开发者使用的compile依赖的com.android.support包,而他所依赖的包与我们本地所依赖的com.android.support包版本不一样,所以就会报All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes这个错误。

    解决办法:

    All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes

    当我们使用android studio添加一些第三方的依赖库时,很可能会提示上面这个错误。

    大致意思就是com.android.support的包版本号要保持一致,但是可能我们自己新建的项目的com.android.support包版本号要高一些,一些第三方的库的com.android.support可能没有及时更新support库,就会出现这个错误。

    解决方法(同样的适用于其他的依赖冲突。)

    1. 修改自己项目中的com.android.support的版本号,与所依赖的库版本号一致,但是当我们依赖的库中的com.android.support版本号有好几个版本就不行了。(不推荐)
    2. 依赖第三方库时候排除掉对com.android.support包的依赖,这样自己的项目随便依赖什么版本都可以,但是这种方法需要你先找到哪些库存在冲突
    3. 通过groovy脚本强制修改冲突的依赖库版本号 (推荐)
    4. 将项目迁移至AndroidX(推荐)
  • 相关阅读:
    切比雪夫不等式
    Myeclipse中可以正常显示,但运行后的网页找不到图片
    Hibernate Is Not Mapped(实体名 is not mapped [from book where id='0'])
    struts2-core-2.1.6.jar!/struts-default.xml无法加载的问题
    myeclipse 8.5最新注册码(过期时间到2016年)
    三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板
    Initializing Spring root WebApplicationContext
    Unable to load bean: type: struts-derfault.xml异常
    Error creating bean with name 'bookDao'
    hibernate异常:Could not determine type for: java.util.Set
  • 原文地址:https://www.cnblogs.com/polo/p/13678457.html
Copyright © 2011-2022 走看看