Android Gradle 插件Gradle 依赖管理 ⑨ ( implementation project 导入依赖库 Module | 导入aar文件作为依赖 | 先配置仓库再导入依赖 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件Gradle 依赖管理 ⑨ ( implementation project 导入依赖库 Module | 导入aar文件作为依赖 | 先配置仓库再导入依赖 )相关的知识,希望对你有一定的参考价值。

文章目录

Android Plugin DSL Reference 参考文档 :





一、implementation project 引入 android Library 类型的 Module 作为依赖库



org.gradle.api.Project 配置 ( build.gradle 根配置 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html


在 build.gradle#dependencies 配置中 , 使用 implementation project 引入 Android Library 类型的 Module 作为依赖库 ;

dependencies 
    implementation project (':mylibrary')
    implementation project (path: ':mylibrary', configuration: 'debug')


implementation project (':mylibrary') 的函数原型是 org.gradle.api.Project 配置中的 Project project(String path) 函数 , 原型如下 :

@HasInternalProtocol
public interface Project extends Comparable<Project>, ExtensionAware, PluginAware 
    /**
     * Creates a dependency on a project.
     *
     * @param notation The project notation, in one of the notations described above.
     * @return The dependency.
     */
    Dependency project(Map<String, ?> notation);

参考文档地址 : https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html


implementation project (path: ':mylibrary', configuration: 'debug') 的函数原型是 org.gradle.api.artifacts.dsl.DependencyHandler 配置中的 Dependency project(Map<String, ?> notation) 函数 , 原型如下 :

public interface DependencyHandler extends ExtensionAware 
    /**
     * Creates a dependency on a project.
     *
     * @param notation The project notation, in one of the notations described above.
     * @return The dependency.
     */
    Dependency project(Map<String, ?> notation);

文档位置 : https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/dsl/DependencyHandler.html





二、引入 aar 文件作为依赖



org.gradle.api.Project 配置 ( build.gradle 根配置 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html


引入 aar 文件作为依赖 , 需要为该 aar 文件指定一个仓库 , 然后才能使用该依赖库 ;


先准备一个 aar 文件 , 这里从 Y:\\001_DevelopTools\\002_Android_SDK\\extras\\android\\m2repository\\com\\android\\support\\percent\\22.2.0 目录中 , 拷贝出 percent-22.2.0.aar 文件 , 作为示例依赖库 ;


这是 SDK 自带的 aar 文件 , 每个 SDK 都有该文件 ;


将 percent-22.2.0.aar 文件拷贝到 app/libs 目录下 ;


在 build.gradle 中配置 repositories#flatDir , 可以将文件或目录指定为仓库 ;

然后在 dependencies 中指定 aar 名称 和 后缀名 ;

repositories 
    flatDir 
        // 将 libs 目录制定为仓库
        dir('libs')
    


dependencies 
    implementation name:'percent-22.2.0', ext: 'aar'

一般的 aar 文件都需要指定一个 pom 文件 , 用于指定该 aar 有哪些依赖 ;

该 percent-22.2.0.aar 对应的 pom 文件 percent-22.2.0.pom 如下 : 该 aar 包依赖 com.android.support 组下的 support-v4 函数库 , 版本号为 22.2.0 ;

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.android.support</groupId>
  <artifactId>percent</artifactId>
  <version>22.2.0</version>
  <packaging>aar</packaging>
  <dependencies>
    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>support-v4</artifactId>
      <version>22.2.0</version>
      <type>aar</type>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于Android Gradle 插件Gradle 依赖管理 ⑨ ( implementation project 导入依赖库 Module | 导入aar文件作为依赖 | 先配置仓库再导入依赖 )的主要内容,如果未能解决你的问题,请参考以下文章

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

Android Gradle 插件Gradle 构建机制 ⑤ ( 在 Android Studio 中查看 Android Gradle 插件源码 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )

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

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

Android Gradle 插件Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )