猫头虎博主来啦! 🐱🐅 在今天的文章中,我将为大家分享如何处理Gradle中的一个常见问题:“Could not resolve all dependencies for configuration…”。在搜索这个问题的过程中,我发现很多开发者都遇到了这个问题,尤其是在配置仓库时使用了不安全的HTTP协议。如果你也在Google中搜索“Gradle 不安全协议如何处理”或者“Gradle依赖问题解决方案”,那么恭喜你,你找到了正确的地方!
Task#dependsOn 函数的作用是为 Gradle 任务设置依赖任务 , 执行该任务前 , 依赖任务必须被满足 ;
org.gradle.api.Project 配置 ( build.gradle 根配置 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html
在 Android 应用中 , 最常见的图片格式是 png 和 jpg 格式 , 为这两种图片格式选择合适的图片压缩工具 :
最近在弄kafka相关的东东,因为是spring boot工程,所以用到了Spring-kafka,一个包含了kafka-producer和kafka-consumer自动装配的依赖。为了进一步研究spring是如何封装的kafka官方客户端的细节,所以从github上拉到了源码准备研究下,在导入到IDEA中时,因为Spring-kafka工程使用的是Gradle,导入时就编译失败了,导入工程失败。
添加构建依赖项 参考文档 : https://developer.android.google.cn/studio/build/dependencies
Task#finalizedBy 函数 的作用是为 Gradle 任务 设置任务执行完毕后执行的任务 ;
在 图片优化时 , 需要将 png 格式的图片转为 webp 格式 , 但是注意不要将带 alpha 透明度通道的图片转为 webp 格式 , 在某些 Android 版本中 只支持 没有透明度通道的 webp 图片 ;
中 , 分别使用 自定义 Jar 类型 Gradle 任务 将 插件源码 和 插件文档 打包到了 jar 包中 ;
Task#shouldRunAfter 函数的作用是为 Gradle 任务设置该任务执行时 , 应该在某个任务之后 ;
在 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑤ ( 使用 Sonatype Nexus 搭建 Maven 仓库 ) 博客中搭建的 Maven 私服基础上 , 登录 http://localhost:8081/ Web 页面 ;
DefaultTask 又继承了 AbstractTask 类 , 在 AbstractTask 类中 , 有 taskInputs 和 taskOutputs 两个成员变量 , 分别代表任务的 输入 和 输出 ;
在 Gradle 脚本中引入二进制插件是常见的用法 , 如 Android 中的 build.gradle 插件引入 ;
LibraryExtension ( Library 依赖库的 build.gradle#android 配置 ) 文档 : android-gradle-dsl/2.3/com.android.build.gradle.LibraryExtension.html
如果执行一个 Gradle 任务 , 该任务名称比较长 , 如 compileDebugAndroidTestSources 任务 ,
分组是在 org.gradle.api.Project 中的 configurations 中配置的 ,
在 buildSrc 模块 中的 src/main/groovy 目录 下 , 创建 MyPlugin.groovy 代码文件 作为插件的主要代码 , 代码如下 :
org.gradle.api.Task 配置 ( Gradle 任务类型 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html
新项目需要用到视频播放,果断在项目中依赖了饺子播放器,因为用的人还挺多的,Stargazers有7.7K了,然后开始了我的采坑之路,不是说这个框架很坑,而是AndroidStudio。
在插件模块中的 src/main 目录 下创建 groovy 目录 , 用于存放 Groovy 代码 , 在其中定义包名以及包名下的源码 :
如果 Gradle 任务 A 的执行 是在 Gradle 任务 B 执行的基础上的 , 那么可以将任务 B 设置为 任务 A 的依赖 ;
如 : other 分组下的 compileDebugJavaWithJavac 任务 , 该任务的主要作用是 使用 javac 编译器工具 将 Java 源代码文件 编译成 Class 字节码文件 ;
创建 Gradle 插件 , 一般是在 Android Studio 或者 IntelliJ IDEA 中 , 创建一个插件模块 , 这里以 AS 中为例 ;
参考 Android Gradle 插件内容 , 将 Android Studio 的 Project 面板中的 External Libraries 展开 ,
Sonatype Nexus 安装目录为 : D:\001_Develop\043_Sonatype_Nexus\nexus-3.27.0-03-win64\nexus-3.27.0-03
在 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑦ ( 登录 Maven 私服 | Maven 私服初始化设置 | 创建 Maven 仓库 ) 博客中 , 在 Maven 私服中创建了 Maven 仓库 " MyRepository “ , 地址为 ” http://localhost:8081/repository/MyRepository/ " ;
$ gradle packageDebug --stacktrace error: top-left corner pixel must be either opaque white or transparent.
在 DefaultTask 中的 任务输出 调用 TaskOutputs#upToDateWhen 方法 , 在传入的闭包参数中 , 返回值为 true 时 , 在编译时遇到该 自定义 Gradle 任务 , 如果 第二次执行 且 输入 / 输出 相同 , 会跳过该任务 , 执行下一个任务 ;
Sonatype 官方网站 : https://www.sonatype.com/
点击 Android Studio 右侧的 Gradle 面板 , 可以查看该 Android 工程的一系列 Gradle 任务 , 这些 Task 任务都分好了组 , 有如下分组 :
在上一篇博客 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 ) 中 , 总结了在 Android Studio 工程中 自定义 Gradle 插件 , 并在 build.gradle 构建脚本 中导入插件的代码 ;
在使用 Gradle 进行 build 的时候运行测试,提示 build 不能完成,测试不能进行。
在之前的 【Android Gradle 插件】自定义 Gradle 插件模块 ⑤ ( 完整总结 ) ★★★ 博客中 , 将自定义 Gradle 插件的 jar 包发布到了本地 Maven 仓库 , 效果如下 : " C:\Users\octop.m2\repository " 目录中的内容如下 :
在 Gradle 面板 中的 自定义 Gradle 插件的 Module 模块 下 , 有 documentation 任务分组 , 其中有
在上一篇博客 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 ) 中 , 实现了 自定义插件 的 扩展 Extension , 在 Module 模块下的 build.gradle 构建脚本中 , android 配置块 就是一个 AppExtension 扩展 , 但是在 android 扩展下又定义了 defaultConfig 扩展 , 这是一个 ProductFlavor 配置 ;
等分组 , 是 Gradle 自带分组 , 自定义的 Gradle 任务 默认放置在 other 分组 中 ;
org.gradle.api.tasks.bundling.Zip 自带任务 ( 任务类型 ) 文档 :https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html
Gradle 提供了一种领域特定语言(DSL)来描述构建,这种构建语言在 Groovy 和 Kotlin 都可以使用。
在 Gradle 自定义插件 Plugin 中 , 如果要执行复杂的工作 , 可以在 实现的 Plugin 接口的 apply 函数中执行 ;
在 buildSrc 中开发了自定义 Gradle 插件 , 编译后在 build/libs 目录下会生成 buildSrc.jar 包 ,
也可以 通过 project.ext.hello 访问该扩展属性 , 代码如下 :
领取专属 10元无门槛券
手把手带您无忧上云