Android-gradle plugin

本文详细介绍了Android Gradle Plugin(AGP),包括在根目录`build.gradle`配置AGP,以及`com.android.application`和`com.android.library`插件的作用。讨论了基于Gradle的Android项目的结构,如`settings.gradle`、`build.gradle`和`gradle.properties`的用途,还深入探讨了`application`插件的源码,展示了如何创建和配置任务以及处理变体。
摘要由CSDN通过智能技术生成

agp

  大家常说的agp其实就是Android-Gradle-Plugin的缩写,在项目中的配置就是在根目录下的build.gradle文件中的dependencies中配置的classpath “com.android.tools.build:gradle:xxx”,在根目录build.gradle的dependencies中配置好agp后就能在任意module的build.gradle文件中apply Android提供的各种plugin,常见的就有com.android.application和com.android.library,一般来说build.gradle中apply了com.android.application的module,使用assemblexxx执行构建命令打出来的产物就是一个apk,而apply了com.android.library的module的产物则是一个aar,当然,还可以直接apply java,这样的module表示是个纯java的模块,打出的产物是个jar。

Android的gradle项目基本配置说明

  现在的Android工程应该都是用Android-Studio来开发的了,也就是说基本都是基于gradle来构建的,应该也只有一些外包公司还会使用Eclipse + ADT来开发Android了。
  任何基于gradle来构建的项目的基本结构都是根目录下有个settings.gradle,用来配置项目中的子模块的,使用include来引入子模块,如果子模块不在项目目录内,则可以在include之后使用project(":xxx").projectDir = new File("…")来指定外部module的路径,这一般是gradle项目多仓开发的配置方式。然后就是项目根目录下有个build.gradle,这个文件是用来配置整个项目的基本依赖,比如插件依赖,aar依赖的maven仓库地址等。一般配置结构如下:

// projectDir/build.gradle
apply plugin "..."
apply from "..."

buildscript {
    repositories {
        maven { url "xxxx" }
        ....
    }
    
    dependencies {
        classpath "xxx"
        ...
    }
}

subprojects {
    repositories {
        maven { url "xxx" }
        ...
    }
}

allprojects {
    ...
}

这是groovy语言的写法,其实这个build.gradle文件会被编译成字节码去执行,而这些闭包则会编译成函数的实现。而闭包里面的闭包,则相当了函数调用了。
其中buildscript就是用来设置构建脚本所需依赖的仓库地址和引入插件的依赖,subprojects中用来配置每个module中的依赖的仓库地址,allprojects中则是配置config阶段的回调,可以在这个闭包中设置一些状态监听与module属性的配置。
  还有一点特别重要的是项目根目录和每个module中都会有一个gradle.properties文件,这个文件中是配置一些key-value的,而构建脚本文件,就是所有的gradle文件,都是可以直接使用gradle.properties中的key-value配置,例如在gradle.properties中配置了DEV_MODE=true,则可在gradle文件中直接使用if (“true” == DEV_MODE) {xxx},但这里有个限制,gradle.properti

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值