|
一、Gradle介绍
Gradle是一个高级构建系统和构建工具,允许通过插件自定义构建逻辑。Gradle的实质是配置脚本,执行一种类型的配置脚本时就会创建一个关联的对象,它由三种脚本类型构成,分别是构建脚本(Build Script)、初始化脚本(Init Script)及设置脚本(Settings Script),其对应的三种代理对象分别是Project对象、Gradle对象及Settings对象。
二、Gradle基础配置
- Android Studio对应工程目录

- settings.gradle文件介绍
该文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module。
- build.gradle文件介绍
该文件如果是面向工程的,一般用来存储构建脚本的版本来源及工程的仓库来源,如下图所示,指定的构建工具版本是gradle1.2.3,该工具及全局工程的仓库来源都是jcenter;
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
allprojects {
repositories {
jcenter()
}
}
而如果该文件面向的是对应的module,则一般指定的module类型,Android相关及依赖库,如下图所示为常用配置。
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId 'com.xyy.example'
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
multiDexEnabled true
}
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
lintOptions {
abortOnError false
}
productFlavors {
}
signingConfigs {
debug {
storeFile file('×.keystore')
storePassword ×××
keyAlias ××××
keyPassword ×××
}
release {
storeFile file('×.keystore')
storePassword ×××
keyAlias ××××
keyPassword ×××
}
}
buildTypes {
debug {
buildConfigField("boolean", "LOG_DEBUG", "true")
versionNameSuffix "debug"
minifyEnabled false
zipAlignEnabled false
shrinkResources false
signingConfig signingConfigs.debug
}
release {
buildConfigField("boolean", "LOG_DEBUG", "false")
versionNameSuffix "release"
minifyEnabled false
zipAlignEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
sourceSets{
main{
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile '...'
provided '...'
compile files('...')
provided files('...')
compile project('...')
}
4 gradle.properties文件介绍
该文件一般用来存储工程范围内的全局属性,而如果是与开发者个人相关且不便纳入版本控制的属性,则放到 $HOME/.gradle 下的 gradle.properties 文件,比如签署app的密钥等。
三、多渠道打包配置
1.在AndroidManifest.xml中设置PlaceHolder(占位符)
在application下添加
<meta-data
android:name="渠道名称"
android:value="渠道ID"
/>
2.在对应module中的build.gradle文件中设置productFlavors(渠道信息)
首先在defaultConfig下设置默认渠道
manifestPlaceholders = [XYY_FLAVORS: "渠道ID"]
然后在android下指定需要打包的渠道信息
productFlavors {
渠道ID1 {}
渠道ID2 {}
渠道ID3 {}
渠道ID4 {}
...
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [XYY_FLAVORS: name]
}
最后在buidTypes的release下指定发布时的渠道包名称
applicationVariants.all {
variant -> variant.outputs.each {
output -> def outputFile = output.outputFile
if(outputFile != null && outputFile.name.endsWith(".apk")){
def fileName = "xyy_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
3.使用assemble命令进行打包
使用./gradlew assemble+productFlavor+buildType进行打包,如:
./gradlew assembleBaiduRelease指定Baidu的release版本;
./gradlew assembleBaidu指定Baidu的release和debug版本;
./gradlew assembleRelease指定所有渠道的release版本;
./gradlew assemble指定所有渠道的release和debug版本。
四、Maven仓库管理配置
1、本地配置,针对所有该用户下所有工程
在$HOME/.gradle下添加init.gradle文件,这是Gradle初始化脚本,也是面向用户的全局配置,配置如下:
allprojects{
repositories {
def REPOSITORY_URL = '本地仓库路径'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
2、在对应工程的build.gradle配置
allprojects {
repositories {
maven{
credentials{
username '用户名'
password '密码'
}
url '本地仓库路径'
}
}
}
3、上传代码到本地仓库配置
在需要上传的module下的build.gradle中添加如下配置
apply plugin:'maven'
uploadArchives{
repositories{
mavenDeployer{
pom.groupId = "com.xyy.example"
pom.version = "1.0.0"
repository(url: "本地仓库路径"){
authentication(userName: 用户名, password: 密码)
}
}
}
}
五、自动化测试配置
在需要进行测试的module下的build.gradle文件中添加
apply from: '../config/quality.gradle'
在工程下新建config文件夹,将如下路径https://github.com/xiaoyaoyou1212/vb-android-app-quality/tree/master/config下的文件下载后放置到该文件夹下,再在该工程下使用gradle findbugs、gradle checkstyle、gradle lint及gradle pmd进行代码检查,检查的结果会在build下的reports文件夹下。
六、参考链接
- Gradle插件用户指南(译)
- 拥抱Gradle:下一代自动化工具
- Gradle脚本基础全攻略
|