gradle-wrapper.properties:gradle工具配置文件
distributionUrl: 要下载的gradle地址
zipStoreBase + zipStorePath: 下载的gradle存放位置
distributionBase + distributionPath: 解压后的gradle存放位置
XXXBase取值:GRADLE_USER_HOME-系统用户目录,PROJECT-工程目录
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
settings.gradle:Module配置文件
include: 包含的模块
project('XXX').projecDir: 源代码路径
include定义包含的模块,非根目录的模块需要定义projectDir
include ':app', ':module1'
project(':module1').projectDir = new File("XXX\\module1")
rootProject.name = "demo"
build.gradle: 工程
buildscript: gradle脚本执行所需依赖
|-repositories: 定义依赖来自哪些仓库
|-|-google(),jcenter(),maven{credentials{username 'X' password 'X'} url "X"}
|-dependencies: classpath定义具体依赖项
allprojects: 项目所需依赖
|-同上
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.3"
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
build.gradle: 模块
apply plugin: 'com.android.application‘: 定义Module类型为app, 可独立运行
apply plgin: 'com.android.library': 定义Module类型为库,app依赖的库文件
android
|-defaultConfig
|-|-applicationId,各种version
|-buildTypes
|-|-release,debug, ...
|-|-|-minifyEnable true: 打包时去掉无用代码
|-|-|-shrinkResources: 打包时去掉无用资源
|-|-|-applicationIDsuffix '.debug': id附加,可生成多个同名apk
|-|-|-versionNameSuffix '-debug':多个同名apk的版本后附加
|-productFlavors: 构建多个版本app
|-|-XXX1: 版本名
|-|-|-applicationId 'com.example.hello.XXX1': 版本id
|-|-XXX2
|-compileOptions
|-|-sourceCompatibility
|-|-targetCompatibility
dependencies: 依赖库
|-implementation,api,...
task XXX(type: XXX, dependsOn: XXX): 任务
type: Copy 复制
|-from: 源目录或源文件
|-into: 目标目录
|-rename: 重命名
task copyTask(type: Copy) {
from "src/main/XXX"
into "src/XXX"
rename { String fileName->
fileName.replace('.', '2.')
}
}
type: Jar 打包jar包
|-manifest: 配置打包出的jar包里 MANIFEST.MF文件中的内容
|-|-attributes: 定义文件内容里的key-value
|-archiveName: 打包出的jar包名字
|-from: include的文件查找目录
|-include: jar包里打包的文件
|-exclude: include目录时不需要打包的文件
task buildJar(type: Jar) {
manifest {
SimpleDateFormat formatter = new SimpleDateFormat("YYYYMMddhh");
Date curDate = new Date(System.currentTimeMillis());
String version = formatter.format(curDate);
attributes 'version': version
}
archiveName('demo.jar')
from('src/main/java')
include('com/rlaflsk/myapplication/XXX.java')
include('com/rlaflsk/myapplication')
exclude('com/rlaflsk/myapplication.XXX.java')
}