• 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(推荐)
  • 相关阅读:
    对象 函数
    流程控制语句 label 从键盘输入 计时器 []中括号的使用
    类型转换 运算符 流程控制语句
    JS的编写的位置 输出语句 注释 字面量和变量 数据类型
    AutoCad 二次开发 .net 之创建Table
    AutoCad 二次开发 .net 之相同块的自动编号
    Java 多线程练习
    C# Winform 自定义控件——竖着的Navbar
    C# Winfrom 自定义控件——带图片的TextBox
    Task CancellationTokenSource和Task.WhenAll的应用
  • 原文地址:https://www.cnblogs.com/polo/p/13678457.html
Copyright © 2020-2023  润新知