记录在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 {}
。