目录
1、androidStudio中build.gradle的结构和作用
1、androidStudio中build.gradle的结构和作用
目录结构:
root
|-- build.gradle (1)
|-- app
|-- build.gradle (2)
|-- module
|-- build.gradle (3)
|-- settings.gradle (4)
(1)根目录下的build.gradle
这个文件主要负责整个项目的插件管理,和设置每个子模块的通用配置
buildscript {
// 配置插件的仓库位置
repositories {
google()
jcenter()
// maven本地仓库
maven {
url uri('repo')
}
}
dependencies {
// 指定要导入那些插件
// 插件命名格式 组名:插件库名:版本号
classpath 'com.android.tools.build:gradle:3.5.2'
classpath 'com.plugin:plugin:1.0.0'
}
}
// 所有子模块通用配置
allprojects {
// 配置依赖的仓库位置(其实也可以直接写在对应的子模块内)
repositories {
google()
jcenter()
}
}
****另一种写法,直接把配置依赖的仓库位置,在子模块build.gradle中配置
repositories {
google()
jcenter()
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
...
}
(4)settings.gradle
声明该项目引用那些模块
include ':app'
(2)build.gradle 对应主模块的配置
// 引用某个插件plugin
apply plugin: 'com.android.application'
// 引用本地第三方插件plugin
apply plugin: TextPlugin1
// 配置该模块的信息
android {
}
// 配置依赖的仓库位置(跟根目录下build.gradle下allprojects重叠)
repositories {
}
// 配置引用那些依赖
dependencies {
}
(3)build.gradle 对应子模块的配置(写法跟主模块的build.gradle一样)
总结:
每个build.gradle对应着一个project对象(可以理解成配置文件一样,一个模块对应一个配置文件),使用groovy的动态语音编写,用了闭包的写法,加上groovy的本身的语法特性,所以看起来很简洁。
2、task任务和自定义task任务
(1)task的使用
例如:图上箭头标出就是就我们平时点击 执行的任务,双击对应的任务就可以执行。
(2)自定义task
1.最基础的定义方式
task hello1 {
doLast {
println("hello1")
}
}
上面写法是被它简化了,它原本的样子是这样的
task(hello1,{
doLast {
println("hello1")
}
})
// task方法是长这样的
Task task(String name, Closure configureClosure)
2.较高级的用法(这部分就没有详细写了)
task hello3 {
doLast {
println("hello3")
}
}
// 依赖着hello3,即先执行hello3,在执行自己
task(dependsOn: hello3, hello2) {
doLast {
println("hello2")
}
}
// 复制任务
task copyTask(type: Copy) {
from "src/main/AndroidManifest.xml"
into "/"
}
备注:复制到app下的build.gradle就可以运行
3、自定义插件
自定义插件库的文件结构如下:
1.配置build.gradle
apply plugin: 'java'
// 需要编译groovy,需要groovy插件
apply plugin: 'groovy'
// 需要发布到本地仓库,需要maven插件
apply plugin: 'maven'
// 配置依赖
dependencies {
compile gradleApi() // 需要继承Plugin<T>
compile localGroovy() // 因为用groovy写的,需要该依赖
}
// 指定组名,和版本号
group = 'com.plugin'
version = '1.0.0'
// 指定maven本地仓库位置
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../repo'))
}
}
}
2.继承Plugin<T>
package com.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
public class TextPlugin1 implements Plugin<Project> {
void apply(Project project) {
project.task('hello') {
doLast {
println "Hello World from the DemoPlugin"
}
}
}
}
3.properties配置文件
implementation-class=com.plugin.TextPlugin1
名字方法 组名(com.plugin) 即:com.plugin.properties
4.执行发布maven仓库 执行task:uploadArchives
到这里如果一切顺序就会在本地看到这个仓库
至于怎么使用这个插件库,可以看回第一部分的内容
如果成功导入一个第三方插件库,就可以在这个地方看到对应的task任务