简单的总结一下gradle:
1.Gradle是一种构建工具,它可以帮你管理项目中的差异,依赖,编译,打包,部署…你可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用.
2.Gradle不是一种编程语言,它不能帮你实现软件中的任何实际功能
Gradle 基本
如果你用Android Studio新建一个项目的时候,默认生成一大堆关于gradle的东西,其中最重要的是一个build.gradle的文件,内容如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:support-v4:26.0.+'
}
解读:
apply plugin::指定用的是哪个插件,开发中常见的值有:
'com.android.application':Android APP插件(打包得到的是.apk文件)
'com.android.library':Android库插件(打包得到的是.aar文件)
'java':普通的java插件(打包得到的是.jar文件)
我目前用到的还有:
kotlin-android : kotlin
bugly.gradle : 腾讯bugly
walle.gradle : 美团walle打包
android{}用来指定Android打包插件的相关属性,包含如下节点:
compileSdkVersion(apiLevel):设置编译时用的Android版本
buildToolsVersion(buildToolsVersionName):设置编译时使用的构建工具的版本
defaultConfig:设置一些默认属性,其可用属性是buildTypes(debug,release,其他+)和productFlavors(谷歌商店,豌豆荚,小米应用商店)之和。
最终可以打出的APK的数量就是buildTypes乘以productFlavors。构建的变量名称是productFlavors+buildTypes。
dependencies 配置依赖:
各种外部依赖直接一行代码搞定,不用手动下依赖包了。
其中compile fileTree(dir: 'libs', include: ['*.jar'])的意思是依赖libs目录下全部的jar文件。
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
buildscript节点,大概意思就是支持maven,google,声明Gradle的版本.如果用到一些其他插件也需要在此申明.
signingConfigs {
myConfig {
storeFile file("xxx.keystore")
storePassword "123123"
keyAlias "xxx"
keyPassword "123123"
v2SigningEnabled true
}
}
buildTypes{
release {
//应用myConfig
signingConfig signingConfigs.myConfig
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
签名配置:
storeFile : keystore文件
storePassword : 密码
keyAlias : 别名
keyPassword : 别名密码
v2SigningEnabled : 启用V2签名方案
minifyEnabled : 是否开启混淆
shrinkResources : 是否移除无用资源文件,shrin