• 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(推荐)
  • 相关阅读:
    t
    bert4keras
    embeding应用-airbnb推荐
    The Neural Autoregressive Distribution Estimator
    3.redis desktop manager--redis 可视化工具安装及使用
    Day06作业(postman接口测试)
    DRF学习day01(web应用模式,api接口,RESTful API规范,序列化,Django Rest_Framework)
    restFul接口设计规范
    Vue学习之荏苒资讯项目(一)
    微信小程序开发四:Promise的使用,解决回调地狱
  • 原文地址:https://www.cnblogs.com/polo/p/13678457.html
Copyright © 2020-2023  润新知