@jimbo
        
        2016-10-24T01:50:47.000000Z
        字数 3282
        阅读 1033
    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组成的项目来说是必须的,配置该项目的projectinclude ':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.0classpath 'com.android.tools.build:gradle:2.2.0'}}//subprojects:它会遍历每个子 Project。// 为所有的Project配置respsitoriesallprojects {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 23buildToolsVersion '24'// 添加配置属性defaultConfig {applicationId "com.netease.snailread"minSdkVersion 14targetSdkVersion 21versionCode 7versionName "0.9.11"multiDexEnabled true}// 签名配置signingConfigs {debug {}release {storeFile file(KEYSTORE_PATH)storePassword KEYSTORE_PASSWORDkeyAlias KEYSTORE_ALIASkeyPassword 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.releasezipAlignEnabled truedebuggable false// 移除无用的resource文件shrinkResources false// 先不混淆minifyEnabled falseproguardFiles 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'])}