当前位置:   article > 正文

Android Gradle(三)根节点的build.gradle详解_com.android.tools.build:gradle

com.android.tools.build:gradle

这节主要讲根节点的build.gradle,因为module的build.gradle主要涉及到Android Gradle Plugin。
上项目代码(经过一些简化)

  1. // Top-level build file where you can add configuration options common to all sub-projects/modules.
  2. buildscript {
  3. ext.kotlin_version = '1.3.72'
  4. repositories {
  5. //阿里云的镜像库
  6. maven {url "http://maven.aliyun.com/nexus/content/groups/public/"}
  7. }
  8. dependencies {
  9. //继 AGP 4.2 之后的版本为版本 7.0,并且会要求升级到 Gradle 7.x 版。AGP 的每个主要版本都会要求在底层 Gradle 工具中进行主要版本升级。
  10. classpath 'com.android.tools.build:gradle:4.0.1'
  11. }
  12. }
  13. allprojects {
  14. repositories {
  15. //阿里云的镜像库
  16. maven {url "http://maven.aliyun.com/nexus/content/groups/public/"}
  17. }
  18. configurations.all {
  19. resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
  20. }
  21. }
  22. task clean(type: Delete) {
  23. delete rootProject.buildDir
  24. }
  25. ext {
  26. version = [
  27. versionName = "7.5.1",
  28. versionCode = versionCode()
  29. ]
  30. minSdkVersion = 19
  31. targetSdkVersion = 29
  32. compileSdkVersion = 29
  33. }
  34. def versionCode() {
  35. def versionName = rootProject.ext.versionName
  36. println(versionName)
  37. String[] split = versionName.split("\\.")
  38. List<String> versions = split.toList()
  39. if (split.length < 3) {
  40. for (i in split.length..2) {
  41. versions.add("0")
  42. }
  43. }
  44. StringBuilder builder = new StringBuilder()
  45. for (s in versions) {
  46. builder.append(String.format("%02d", Integer.parseInt(s)))
  47. }
  48. def versionCode = Integer.parseInt(builder.toString())
  49. println(versionCode)
  50. return versionCode
  51. }

可以看到上面主要分为五个节点(以闭包来统计)。


1.buildscript


构建的脚本,主要负责工程一些插件的导入,例如AGP,kotlin或者一些第三方插件。
1.1 repositories
仓库地址,主要有三种仓库
1.ivy 2.maven 3.jcenter (官方已经准备停止)
主要就是提供脚本下载第三方资源的地址。
1.2 dependencies
配置一些项目的需要的第三方资源
1.3 classpath 和 implementation 区别?
classpath:下载第三方资源,用于帮助构建项目
implementation:下载第三方资源,用于项目代码的使用。
区别:implemetation下载的资源会被打包进apk里.

2.allprojects

所有module的配置,例如repositories ,为所有的module提供下载地址。
2.1 上面的repositories和这里的repositories区别?
上面的repositories 主要是为我们下载构建项目提供仓库
而这里的repositories 主要是为项目提供仓库
上面的repositories 属于ScriptHandler类(通过点击节点查看)
这里的repositories 属于Project类

3.task clean

清理项目build缓存任务

4.ext

扩展属性,用于其他模块直接使用,类似于 val ,区别是ext可以闭包操作。例如
ext{
minSdkVersion = 19
targetSdkVersion = 29
}
其他模块使用,例如 app的build.gradle:
minSdkVersion rootProject.ext.minSdkVersion
也可以
minSdkVersion rootProject.minSdkVersion
tip:每个节点都有ext属性,例如 android{}
android.ext{

}

5.versionCode

自定义方法,build.gradle 一般使用Groovy语言,也支持java kotlin语言。

1.Android Gradle - Gradle 生命周期_wumeixinjiazu的博客-CSDN博客

2.Android Gradle - Gradle 和 AGP区别_wumeixinjiazu的博客-CSDN博客

3.Android Gradle - 根节点的build.gradle_wumeixinjiazu的博客-CSDN博客

4.Android Gradle - AGP使用_wumeixinjiazu的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/308400
推荐阅读
相关标签
  

闽ICP备14008679号