记录在gradle使用中的一些技巧和心得。
查看源码
在android project的build.gradle下添加的android gradle plugin
buildscript{
dependencies {
// 插件版本号
def plugin_version = '7.1.2
classpath 'com.android.tools.build:gradle:$plugin_version'
}
}
在app的build.gradle下添加的android {}
android {
}
对应的源码去哪里查看?
- 在本机上查看
文件路径
//plugin_version 是上面给出的插件版本号
C:\Users\xxx\.gradle\caches\modules-2\files-2.1\com.android.tools.build\gradle\plugin_version
- 在
maven仓库中查看
在阿里云maven仓库搜索。
把对应的gradle-7.1.2-sources.jar下载下来,解压后,使用sublimetext打开可以查看每个类的源代码。
对于不在gradle-7.1.2-sources.jar包中的类,可以把对应类或者所在的文件夹和gradle-7.1.2-sources.jar解压缩路径放在一起,再用sublimetext打开。就可以查看了。
android {} 对应的类是:AbstractAppExtension,AppExtension,BaseAppModuleExtension。
在build.gradle中获取BaseAppModuleExtension的实例对象。
BaseAppModuleExtension baseAppModuleExtension = project.extensions.findByType(BaseAppModuleExtension)
这样就可以轻松的读写android {}中的属性了。
闭包
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 {}。