欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: 曾是放牛娃

一文搞清 <a href=劳务调派系统Gradle依赖" class="aligncenter size-medium wp-image-31307" title="gradle" src="/uploads/allimg/c190111/154G50A2644F-13S9.jpg" />

之前对 Android Gradle 构建的依赖一直傻傻分不清,这段时间正好接入团体的一个二方库,踩了许多坑,也顺带把 Gradle 依赖这块搞清楚了,主要整理了下 Gradle 依赖的范例、依赖设置、如何查察依赖、依赖斗嘴如何办理。

依赖范例

dependencies DSL 标签是尺度 Gradle API 中的一部门,而不是 Android Gradle 插件的特性,昆山软件开发,所以它不属于 Android 标签。
依赖有三种方法,如下面的例子:

apply plugin: 'com.android.application'

android { ... }

dependencies {
    // Dependency on a local library module
    implementation project(":mylibrary")

    // Dependency on local binaries
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // Dependency on a remote binary
    implementation 'com.example.android:app-magic:12.3'
}

当地 library 模块依赖

implementation project(":mylibrary")

这种依赖方法是直接依赖当地库工程代码的(需要留意的是,mylibrary 的名字必需匹配在 settings.gradle 中 include 标签下界说的模块名字)。

当地二进制依赖

implementation fileTree(dir: 'libs', include: ['*.jar'])

这种依赖方法是依赖工程中的 module_name/libs/ 目次下的 Jar 文件(留意 Gradle 的路径是相对付 build.gradle 文件来读取的,所以上面是这样的相对路径)。

假如只想依赖单个特定当地二进制库,可以如下设置:

implementation files('libs/foo.jar', 'libs/bar.jar')

长途二进制依赖

implementation 'com.example.android:app-magic:12.3'

上面是简写的方法,这种依赖完整的写法如下:

implementation group: 'com.example.android', name: 'app-magic', version: '12.3'

group、name、version配合定位一个长途依赖库。需要留意的点是,version最好不要写成”12.3+”这种方法,除非有明晰的预期,因为非预期的版本更新会带来构建问题。长途依赖需要在repositories标签下声明长途客栈,譬喻jcenter()、google()、maven客栈等。

依赖设置

今朝 Gradle 版本支持的依赖设置有:implementation、api、compileOnly、runtimeOnly 和 annotationProcessor。已经废弃的设置有:compile、provided、apk、providedCompile。另外依赖设置还可以加一些设置项,譬喻 AndroidTestImplementation、debugApi 等等。

常用的是 implementation、api、compileOnly 三个依赖设置,寄义如下:

  • implementation:与compile对应,会添加依赖到编译路径,而且会将依赖打包到输出(aar或apk),可是在编译时不会将依赖的实现袒露给其他module,也就是只有在运行时其他module才气会见这个依赖中的实现。利用这个设置,昆山软件开发,可以显著晋升构建时间,因为它可以淘汰从头编译的module的数量。发起,只管利用这个依赖设置。
  • api:与 compile 对应,成果完全一样,会添加依赖到编译路径,而且会将依赖打包到输出(aar 或a pk)。与 implementation 差异,这个依赖可以通报,其他 module 无论在编译时和运行时都可以会见这个依赖的实现,也就是会泄漏一些不该该不利用的实现。举个例子,A 依赖 B,B 依赖 C,假如都是利用 api 设置的话,A 可以直接利用 C 中的类(编译时和运行时)。而假如是利用 implementation 设置的话,在编译时,A 无法会见 C 中的类。
  • compileOnly:与 provided 对应,Gradle 把依赖加到编译路径,编译时利用,不会打包到输出(aar 或 apk)。这可以淘汰输出的体积,在只在编译时需要,在运行时可选的环境,很有用。
  • runtimeOnly:与 apk 对应。Gradle添加依赖只打包到 apk,运行时利用,但不会添加到编译路径。这个没有利用过。
  • annotationProcessor:与 compile 对应,用于注解处理惩罚器的依赖设置,这个没用过。
  • 查察依赖树

    可以查察单个module可能这个project的依赖,通过运行依赖的 Gradle 任务,如下:

    1. View -> Tools Windows -> Gradle(可能点击右侧的 Gradle 栏);
    2. 展开 AppName -> Tasks -> Android,然后双击运行 AndroidDependencies。运行完,就会在 Run 窗口打出依赖树了。

    依赖斗嘴办理

    跟着许多依赖插手到项目中,不免会呈现依赖斗嘴,呈现依赖斗嘴如何办理?

    定位斗嘴