android gradle 学习小记

118 阅读1分钟

记录在gradle使用中的一些技巧和心得。

查看源码

android projectbuild.gradle下添加的android gradle plugin

buildscript{
    dependencies {
    // 插件版本号
        def plugin_version = '7.1.2
        classpath 'com.android.tools.build:gradle:$plugin_version'
    }
}

appbuild.gradle下添加的android {}

 android {
 
 }

对应的源码去哪里查看?

  1. 在本机上查看

文件路径

//plugin_version 是上面给出的插件版本号
C:\Users\xxx\.gradle\caches\modules-2\files-2.1\com.android.tools.build\gradle\plugin_version
  1. maven仓库中查看

阿里云maven仓库搜索。

图片.png

把对应的gradle-7.1.2-sources.jar下载下来,解压后,使用sublimetext打开可以查看每个类的源代码。

对于不在gradle-7.1.2-sources.jar包中的类,可以把对应类或者所在的文件夹和gradle-7.1.2-sources.jar解压缩路径放在一起,再用sublimetext打开。就可以查看了。

图片.png

android {} 对应的类是:AbstractAppExtension,AppExtension,BaseAppModuleExtension

build.gradle中获取BaseAppModuleExtension的实例对象。

 BaseAppModuleExtension baseAppModuleExtension = project.extensions.findByType(BaseAppModuleExtension)

这样就可以轻松的读写android {}中的属性了。

图片.png

闭包

settings.gradle对应的类是Settings.java

// settings.gradle
pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

点击 pluginManagement进入到Settings.java中可以看到

void pluginManagement(Action<? super PluginManagementSpec> var1);

PluginManagementSpec getPluginManagement();

如果没有getPluginManagement()这个方法,就无法在settings.gradle中使用闭包pluginManagement {}

getPluginManagement()返回的类型是PluginManagementSpec.在PluginManagementSpec中可以看到

void repositories(Action<? super RepositoryHandler> var1);

RepositoryHandler getRepositories(); 

因此,可以在pluginManagement {}的闭包中使用 repositories {}闭包。同样,如果没有getRepositories()方法,就无法使用闭包repositories {}