快速入门安卓Gradle指南(7/10)Gradle的库依赖

牛客高级系列专栏:

安卓(安卓系统开发也要掌握)

嵌入式

本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人对安卓Gradle的理解。网上安卓资料千千万,笔者将继续维护专栏,承诺提供专栏内容免费技术答疑,直接咨询即可,助您提高安卓学习效率!

目录开始⬇

  • 1、本地引用
  • 2、远程引用
  • 3、引用工程其他子模块
  • 4、Gradle库依赖的管理
    • 4.1 什么是依赖传递
    • 4.2 如何查看Gradle当前依赖关系
      • 4.2.1 使用Gradle命令
      • 4.2.2 使用Gradle面板
      • 4.2.3 使用Gradle View插件
      • 4.3 Gradle依赖冲突如何解决
      • 4.3.1 transitive关键字
      • 4.3.2 force关键字
      • 4.3.3 exclude关键字

第三方库的引用是APP开发中经常遇到的,毕竟不是所有代码都要你自己编写。无论是别人提供或者网上找到的jar包、aar包,或者Google公司提供的诸多第三方包,还是各位大佬在GitHub开源的第三方包,亦或是其他途径获得的第三方包,一般会有本地引用和远程引用。

1、本地引用

获取jar包或者aar包一般有两种方式,最常见的是由其他同事提供他们自己研发的架包,或者自己团队所研发的架包。另一种方式就是从远程服务器下载的开源的架包。然而从远程服务器下载的开源架包一般人不会使用本地引用,至于原因,我们试试本地引用会如何。

假如我们需要本地引用gson这个架包,首先需要到官网去下载,如下载了gson-2.8.6.jar这个架包,我们可以创建libs目录,并放进去:

alt

接着打开app模块下的build.gradle,在最后的 dependencies 加上:

dependencies {
    implementation file('libs/gson-2.8.6.jar')
}

这样就可以将本地的gson-2.8.6.jar架包引入到app这个子模块啦。当然可以如下面这么写:

dependencies {
    implementation fileTree(dir: 'libs', inclue:['*.jar'])
}

这是告诉Gradle编辑器,编辑时需要把libs目录下,所有以.jar为结尾的架包纳入编译。如果有aar包,还可以这么写:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
}

接着Sync同步下工程即可使用了。

2、远程引用

当出现版本修改时,如果是自己研发的架包,你可以很容易拿到新的架包,毕竟还是你自己编译出来的。如果是其他同事研发的架包,他也会主动地提供给你,甚至要求你就使用他的架包。这两种情况下,使用本地引用确实比较合理。但像上面的gson包,如果从2.8.6版本提升到3.0,此时你需要重新去网上找资源,下载资源,再更新到项目工程里,如果一两个架包还比较轻松,但如果很多架包都需要更新,那你将付出很多额外的精力。

远程引用就能解决很好地解决,引用远程服务器上的架包找资源,下载资源,再更新到项目工程里,这繁琐的步骤。我们只需要修改dependencies的依赖,将上述修改为:

dependencies {
    implementation 'com.google.code.gson:gson:2.8.6'
}

其中'com.google.code.gson:gson:2.8.6'这个依赖声明包含以下几个部分:

  • 依赖组名称:'com.google.code.gson',指定了依赖库所属的组,即 GSON。
  • 依赖库名称:'gson',指定了依赖库的名称,即 GSON 库。
  • 依赖库版本号:'2.8.6',指定了使用的 GSON 库的版本号。

这个结构中的 ':' 符号用于分隔不同的部分,用于声明 Gradle 项目所需的 GSON 库。如果需要修改版本,那只要直接修改'2.8.6'为目标版本即可。

3、引用工程其他子模块

上面说的其他人提供的架包或者网上远程下载的架包,一般情况肯定拿不到源码。但如果是自己开发的架包,你可以编译为jar包或者aar包集成到工程里,也可以直接把架包源码以子模块的形式放在工程里,然后被其他的子模块所引用。现在,我们创建一个子模块,名为mylibrary,然后在默认的app子模块里引用mylibrary子模块。

创建子模块之前,复习一下几个概念,打开app子模块的build.gradle,可以看到:

plugins {
    id 'com.android.application'
}

代表当前的子模块将构建为一个应用程序,同样还有:

  • "com.android.application":用于构建 Android 应用程序
  • "com.android.library":用于构建 Android 库的插件
  • "com.android.test":用于构建 Android 测试的插件

因此,我们是可以创建一个工程,里面包括多个application(应用程序)和多个library(库):

  • 一个application可以引用多个library;
  • 一个library可以被不同的application所引用;

那么,现在给app子模块去新建一个library子模块。

依次点击File - New - New Module:

alt

选择Android Library,并设置子模块名称、包名、编程语言等即可。创建后有两个地方需要注意。打开新创建的子模块的build.gradle,可以看到:

plugins {
    id 'com.android.library'
}

代表当前的子模块将构建为一个库。同时,在根目录的settings.gradle会多了一句

include ':mylibrary'

这是因为settings.gradle文件定义了应用程序的模块都有哪些,既然创建了一个新的模块,就需要在此记录,当然这个步骤Android Studio会自动完成。

接着,回到app子模块的build.gradle添加:

dependencies {
    implementation project(':mylibrary')
    ..

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

快速入门安卓Gradle指南 文章被收录于专栏

如果你想学习Android App开发,那么学习Gradle一定是必要的。 Gradle是一种构建工具,用于编译和构建Android应用程序,它可以自动处理依赖关系,生成APK文件等。通过本指南,你将掌握Gradle的基本概念和使用技巧,以及如何在工程中配置Gradle。通过学习Gradle,你可以更高效地构建和管理你的Android应用程序,提高你的开发效率,从而更好地满足用户需求。

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
路过的咸蛋超人也想拿offer:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客企业服务