Android Gradle 插件Android 依赖管理 ③ ( dependencies 依赖配置 | Project#dependencies 函数分析 | 自定义依赖配置 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件Android 依赖管理 ③ ( dependencies 依赖配置 | Project#dependencies 函数分析 | 自定义依赖配置 )相关的知识,希望对你有一定的参考价值。

文章目录





一、dependencies 依赖配置范围



Gradle 构建过程 中 , 依赖的 作用范围 是不同的 , 如 :

  • 有的依赖只在 源码编译时使用 , 如 android Gradle 插件 依赖 ;
  • 有的依赖只在 开发时单元测试运行 , 如 单元测试依赖 ;
  • 有的依赖需要 编译打包到 Apk 文件中 , 如 工程中的依赖库 ;

依赖配置作用范围 是可以自定义的 , 在 Gradle 构建工具中 , 内置了如下几种依赖配置项 , 在 【Android Gradle 插件】Gradle 依赖管理 ⑩ ( dependencies 依赖配置项 configurations ) 博客中 , 提到了在 dependencies 依赖配置中 , Android Gradle Plugin 插件 和 Gradle 官方默认配置好了一批依赖配置项 , 如

  • implementation
  • api
  • compileOnly
  • runtimeOnly
  • annotationProcessor
  • lintChecks
  • lintPublish
  • apk ( 已废弃 )
  • compile ( 已废弃 )
  • provided ( 已废弃 )

上述依赖配置 apk , compile , provided 已废弃 ; 在 build,gradle 构建脚本 中的 dependencies 脚本块 中 , 可以使用上述 依赖配置 ;

Android 依赖参考文档 : https://developer.android.google.cn/studio/build/dependencies


build,gradle 构建脚本 中的 dependencies 脚本块 依赖配置示例 :

dependencies 

    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'





二、Project#dependencies 函数分析



dependencies Project 类中的函数 , Project#dependencies 函数原型 如下 :

    /**
     * <p>配置此项目的依赖项。
     *
     * <p>此方法针对此项目的{@linkDependencyHandler}执行给定的闭包。
     * {@linkDependencyHandler}作为闭包的委托传递给闭包。
     *
     * <h3>示例:</h3>
     * 请参阅文档 @link DependencyHandler
     *
     * @param configureClosure 用于配置依赖项的闭包。
     */
    void dependencies(Closure configureClosure);




三、DependencyHandler#add 函数分析



dependencies 脚本块中的 implementation 配置 , 实际上调用的是 DependencyHandler#add 方法 ,

public interface DependencyHandler extends ExtensionAware 
    /**
     * 向给定配置添加依赖项。
     *
     * @param configurationName 配置的名称。
     * @param dependencyNotation 依赖库名称。
     *
     * 依赖性表示法,在上述一种表示法中。
     * @return 返回依赖项。
     */
    @Nullable
    Dependency add(String configurationName, Object dependencyNotation);

implementation 'androidx.appcompat:appcompat:1.5.1' 代码为例 , add 方法的

  • 第一个参数是配置名称 "implementation" ,
  • 第二个参数是配置的依赖库名称 'androidx.appcompat:appcompat:1.5.1' ;




四、自定义依赖配置



参考 【Android Gradle 插件】Gradle 依赖管理 ③ ( build.gradle#dependencies 依赖分组 | configurations 自定义依赖分组 ) , 依赖配置 是可以自定义的 , 如 implementation 依赖配置 , 在 build.gradle 构建脚本中 , 可以自定义依赖配置 , 在 configurations 中 , 可以自定义依赖配置 ;

定义了依赖配置后 ,

configurations 
	hello 
	

可以直接在 dependencies 脚本块中使用上述依赖配置 ;

dependencies 
	hello 'com.android.support:appcompat-v7:28.0.0'

以上是关于Android Gradle 插件Android 依赖管理 ③ ( dependencies 依赖配置 | Project#dependencies 函数分析 | 自定义依赖配置 )的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件Gradle 依赖管理 ① ( org.gradle.api.Project 配置 | Android Gradle 插件配置与 Gradle 配置关联 ) ★

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )

Android Gradle 插件Gradle 依赖管理 ④ ( Android Gradle 插件中注册的依赖分组 | implementation | api | compileOnly )