IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 关于Gradle新版插件依赖方式 -> 正文阅读

[移动开发]关于Gradle新版插件依赖方式

作者:recommend-item-box-tow

一、前言

gradle在7.0后,具体不清楚哪一版,把依赖方式进行了修改。这里将过程记录如下

二、旧版依赖方式

这里以Hilt的插件使用方式作为对比。
在项目级下面使用如下方式添加

buildscript {
    ...
    dependencies {
        ...
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.41'
    }
}

然后,应用 Gradle 插件并在 app/build.gradle 文件中添加以下依赖项:

...
apply plugin: 'kotlin-kapt'
apply plugin: 'dagger.hilt.android.plugin'

android {
    ...
}

dependencies {
    implementation "com.google.dagger:hilt-android:2.41"
    kapt "com.google.dagger:hilt-android-compiler:2.41"
}

三、新版的依赖方式

修改项目下面的build.gradle为如下

plugins {
    id 'com.android.application' version '7.1.3' apply false
    id 'com.android.library' version '7.1.3' apply false
    id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
    id 'com.google.dagger.hilt.android' version '2.41' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

然后,应用 Gradle 插件并在 app/build.gradle 文件中不需要做改动

四、修改原因

为什么这样修改,根据网上查到的原因是新版升级后,gradle插件的发布也的需要做下更改,要不然还是用不了,所以并不是所有插件都可以这样改的,那么怎么知道这样改可以呢,如何知道要这样写呢。这个主要要去依赖的仓库查看,比如通常用的google()mavenCentral()。这里以maven仓库为例。打开com.google.dagger.hilt.android的maven地址:
https://search.maven.org/artifact/com.google.dagger.hilt.android/com.google.dagger.hilt.android.gradle.plugin/2.41/pom

可以看到以下内容:

<dependency>
  <groupId>com.google.dagger.hilt.android</groupId>
  <artifactId>com.google.dagger.hilt.android.gradle.plugin</artifactId>
  <version>2.41</version>
  <type>pom</type>
</dependency>

第一个就是插件的依赖id,感觉本来在app/build.gradle中应该是使用com.google.dagger.hilt.android.gradle.plugin的。但是项目一直报错,说缺少id 'dagger.hilt.android.plugin'。写上去后发现并没有报错。仔细查看网址发现,最下面有插件依赖关系:
在这里插入图片描述
所以可以知道以前的写法也是可以的。
那么假如不知道链接的话怎么查找?可以打开maven search网站
在这里插入图片描述
输入要查找的hilt关键词。然后观察插件提供方和日期,以及名字,优先关注官方提供的,比如hilt是google提供的,关注最新日期,关注有plugin关键词的插件。点进去看下就好。多找几个,多试试,如果实在没有,那就没办法了。毕竟官方也没有直接说应该用哪个版本。这时候只能还使用之前的方式去添加依赖就好了,好在就是目前新旧版本添加插件的方式是共存的,所以没有什么影响。

五、为什么改成这种方式

这两种方式的区别就是来源了。旧的方式获取插件的来源是第三方的来源,新的来源是官方的或者是被官方信任的来源。这两种方式以前就有,最近发生更改可能是因为Jcenter()的原因吧。说到这里如果在新版本使用自定义的仓库地址可能会有问题,这个待测试。这里将外网的帖子google翻译下贴在下面

对于 Gradle 插件门户,该plugins { }块依赖于门户提供的 REST 服务来将插件 ID 转换为 maven 坐标。这适用于发布到门户的任何插件。

虽然工件当前直接由门户托管,但它们最初托管在 JCenter
上,因此对于在门户中未直接找到的任何内容都有一个后备重定向。这也意味着您通常可以在没有额外源的情况下解决非插件插件依赖项。

发生重定向是因为com.novoda.bintray-release已发布到
JCenter,而不是插件门户。如果您jcenter()只直接使用,您将无法解析仅在您的buildscript {
}块中发布到插件门户的任何插件。使用允许您解析发布到插件门户或 JCenter(或 Maven
中心)gradlePluginPortal()的块中的任何插件,而无需关心它的发布位置或定义多个存储库。buildscript { }

六、其它插件地址

  1. gadle: https://repo.gradle.org/gradle/libs/
  2. gradle-libary: https://plugins.gradle.org/
  3. gradle-plugin: https://plugins.gradle.org/m2/
  4. google-maven(搜关键词plugin): https://maven.google.com/web/index.html?q=plugin

七、参考链接

  1. 使用 Hilt 实现依赖项注入
  2. Plugin [id: ‘dagger.hilt.android.plugin’] was not found in any of the following sources
  3. maven search
  4. When to use gradlePluginPortal()
  5. 允许使用 Gradle 的插件块应用 Android Gradle 插件
  6. Gradle 插件
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:29:58  更:2022-05-05 11:33:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:42:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码