@jimbo
2016-10-24T09:50:47.000000Z
字数 3282
阅读 949
android
gradle是一种基于Groovy的特定领域语言(DSL)来进行项目自动化建构的工具。可以灵活高效的打包项目。
gradle是基于groovy的,而groovy是基于java的,所以脚本在执行的时候也是转换成对象的。gradle主要有三个对象,Gradle,Project和Settings。
其他的gradle文件则一般会被转换成一个实现了script接口的对象。
Gradle包含HomeDir,UserHomeDir,Perent等属性
-HomeDir是gradle的储存路径
-UserHomeDir是Gradle编译的缓存路径,里面会存放配置文件等
每一个 build.gradle 文件都会转换成一个 Project 对象。在 Gradle术语中,Project 对象对应的是 Build Script。在Project中我们要
-加载插件:apply函数来加载插件,例如apply plugin:'com.android.application'.apply函数的调用方式是:apply 参数名:值。
-配置源文件
-设置属性
用来配置项目中的Project
Root project snailreader
+----project ':app'
\--build.gradle
\--settings.gradle
\--gradle.properties
\--local.properties
+----project ':project'
\--build.gradle
+----project ':pulltorefresh'
\--build.gradle
+----project ':uikit'
\--build.gradle
\--project.properties
snailreader/settings.gradle
// 这个文件对于一个由多个Project组成的项目来说是必须的,配置该项目的project
include ':app', ':uikit'
include ':pulltorefresh'
snailreader/build.gradle
//buildscript,repositories,dependencies都是闭包
//在一个multi-project中,根目录下的build.gradle文件可以为做一些全局配置
buildscript {
//jcenter 是一个函数,表示编译过程中依赖的库,所需的插件可以在jcenter仓库中下载。
repositories {
jcenter()
}
// 配置依赖,dependencies 表示我们编译的时候,依赖 android 开发的gradle插件
dependencies {
//class path 是 com.android.tools.build。版本是2.2.0
classpath 'com.android.tools.build:gradle:2.2.0'
}
}
//subprojects:它会遍历每个子 Project。
// 为所有的Project配置respsitories
allprojects {
repositories {
jcenter()
}
}
snailreader/app/build
// 加载插件
apply plugin: 'com.android.application'
// 配置依赖
dependencies {
// URS登录组件
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:design:22.2.+'
compile 'com.android.support:appcompat-v7:22.2.+'
compile 'com.android.support:recyclerview-v7:22.2.+'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.google.android.gms:play-services-appindexing:8.1.0'
compile 'com.android.support:multidex:1.0.1'
compile project(':pulltorefresh')
// 云信
compile project(':uikit')
}
android {
useLibrary 'org.apache.http.legacy'
compileSdkVersion 23
buildToolsVersion '24'
// 添加配置属性
defaultConfig {
applicationId "com.netease.snailread"
minSdkVersion 14
targetSdkVersion 21
versionCode 7
versionName "0.9.11"
multiDexEnabled true
}
// 签名配置
signingConfigs {
debug {
}
release {
storeFile file(KEYSTORE_PATH)
storePassword KEYSTORE_PASSWORD
keyAlias KEYSTORE_ALIAS
keyPassword KEYSTORE_PASSWORD
}
}
// 配置编译类型:可以通过这里来实现多渠道打包
buildTypes {
// buildConfigField会在generated中生成一个buildConfig文件
debug {
buildConfigField "boolean", "NEED_CRASH_COLLECT_FLAG", "false"
// DA统计开关
buildConfigField "boolean", "MA_STATISTIC", "false"
buildConfigField "boolean", "SR_SECURE_CONN", "false"
signingConfig signingConfigs.release
}
release {
buildConfigField "boolean", "NEED_CRASH_COLLECT_FLAG", "true"
// DA统计开关
buildConfigField "boolean", "MA_STATISTIC", "true"
buildConfigField "boolean", "SR_SECURE_CONN", "true" //是否采用https连接
signingConfig signingConfigs.release
zipAlignEnabled true
debuggable false
// 移除无用的resource文件
shrinkResources false
// 先不混淆
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
}
// urs
// 添加依赖 遍历libs下面的文件
fileTree(dir: 'libs', include: '*.aar').each { File file ->
dependencies.add("compile", [
name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name },
ext: 'aar'
])
}