说明:本文参考自《Android群英传–神兵利器》

对于Android开发者来说Gradle是个绕不过去的技术点,只有能理解并熟练的使用Gradle才可以高效有序的开发。

Gradle是什么:

简单来说Gradle就是一个新兴的项目构建工具,他有着很高的灵活度,可以满足我们很多的项目需求。关于Gradle的介绍可以看这篇博文:

Gradle for Android 系列:为什么 Gradle 这么火

Android的Gradle:

Android中的一个project主要有四个Gradle文件:

  • 属于项目的build.gradle:
buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.1.2'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}allprojects {    repositories {        jcenter()    }}

在这里边指定了使用的代码仓库,声明了使用的Android Gradle插件版本,在这里边主要是可以对整个项目进行配置,这些配置适用于该项目下的所有Module

  • 属于Module的build.gradle:
apply plugin: 'com.android.application'android {    compileSdkVersion 23    buildToolsVersion "23.0.3"    defaultConfig {        applicationId "com.wei.rxjavademo"        minSdkVersion 21        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.4.0'    compile 'io.reactivex:rxjava:1.0.14'    compile 'io.reactivex:rxandroid:1.0.1'}

在这里边主要是对于指定的Module进行具体的配置。主要分为三大块:apply plugin(声明了Gradle引入的插件),android(描述了该Android Module在构建过程中的配置参数等信息),dependencies(描述了构建过程中所有依赖的库)。我们绝大部分的配置都是在这里完成。

  • 本地配置local.properties:
## This file is automatically generated by Android Studio.# Do not modify this file -- YOUR CHANGES WILL BE ERASED!## This file must *NOT* be checked into Version Control Systems,# as it contains information specific to your local configuration.## Location of the SDK. This is only used by Gradle.# For customization when using a Version Control System, please read the# header note.#Mon Jun 06 16:24:18 CST 2016ndk.dir=E\:\\Android\\Android_SDK\\ndk-bundlesdk.dir=E\:\\Android\\Android_SDK

这个文件主要是指定使用的SDK和NDK的路径,一般情况不需要改动。

  • 设置settings.gradle:
include ':app'

这个里边主要是声明了整个项目所引用的Module,每当新建一个Module时就会自动的添加进来。

Gradle实践:

Gradle的配置项有很多,我们只需要知道一些常见的即可,更多更详细的Gradle配置项可以查看Android提供的Gradle参考文档:

Android Plugin DSL Reference

使用Gradle自定义项目目录结构:

可以在Module的build.gradle文件的android领域内进行项目结构的自定义:

 sourceSets{        main{            java.srcDirs=['src']            res.srcDirs=['src']            jniLibs.srcDirs=['libs']            jni.srcDirs=['jni']        }    }

可以根据需要配置相应的目录,达到修改文件目录的结果。

使用Gradle自定义代码目录结构:

sourceSets{        main{            res.srcDirs=[                    'src/main/src',                    'src/main/res/layout/activity',                    'src/main/res/lauout/fragment']        }    }

通过这样可以很好的对代码进行分类管理。

使用Gradle配置全局属性:

在project的gradle文件中可以通过ext来配置一些全局的属性,然后在Module文件中直接引用使用,这样可以保证版本的一致性和后期的可维护性。
在project的build.gradle中配置这些全局需要的变量

ext{    compileSdkVersion=23}

在需要用到的Module的build.gradle文件中引用:

android {    compileSdkVersion rootProject.ext.compileSdkVersion    buildToolsVersion "23.0.3"    defaultConfig {        applicationId "com.wei.rxjavademo"        minSdkVersion 21        targetSdkVersion 23        versionCode 1        versionName "1.0"    } }

使用Gradle对某一Module进行配置:

这些操作都是在Module的build.gradle文件中配置的。

配置默认的一些属性:

一些常见的参数都可以在这里配置,最小版本号,目标版本号等。

defaultConfig {        applicationId "com.wei.rxjavademo"        minSdkVersion 21        targetSdkVersion 23        versionCode 1        versionName "1.0"    }

配置buildTypes:

在这里可以针对不同的编译类型进行不同的配置,常见的有debug版本和release版本,也可以自定义编译类型,同时声明一些编译时的参数。

buildTypes {        debug{}        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            signingConfig signingConfigs.release        }        wqc{            applicationIdSuffix ".wqc"            minifyEnabled false        }    }

同时buildType也支持通过继承的方式来进行拓展,而不必须每次都重新写一个:

wqc.initWith(buildTypes.debug)wqc{    applicationIdSuffix ".wqc"}

配置signingConfigs:

在这里可以配置签名信息,当然也可以每次打包时通过AS提供的窗口进行打包。

使用配置好的signingConfigs来进行签名:

//在我们之前自定义的编译版本中使用签名 wqc{            applicationIdSuffix ".wqc"            signingConfig signingConfigs.release }

配置ProGuard:
可以通过配置ProGuard来进行代码混淆,但是不仅仅只是用于代码混淆,它可以对apk文件进行一定的优化和精简。

 buildTypes {        debug{}        release {            //通过将minifyEnable 设置为true来开启代码混淆            //下边的文件一个是SDK提供的默认混淆文件,另一个是项目中的混淆规则文件,我们可以在里边进行混淆规则的定制。            minifyEnabled true            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            signingConfig signingConfigs.release        }        }

Gradle动态配置参数:

System.properties方式:

在项目的gradle.properties文件中定义需要设置的参数名和具体的值

systemProp.keyAlias=myusingkey

在需要使用该参数的地方通过System.properties[]来获取相对应的值

keyAlias System.properties['keyAlias']

通过key/value的方式:
在gradle.properties文件中定义需要的变量参数:

wqc.keyAlias=myusingkey

使用时可以通过project.property来获取

keyAlias project.property('wqc.keyAlias')

Gradle多渠道打包:

关于Gradle的多渠道打包可以看慕课网的这个讲解视频,很详细完善:

Android apk多渠道打包

Android中Gradle常用命令:

  • gradlew task : 查看项目中的所有Task

  • gradlew task –all:查看所有task的作用和相互之间的调用关系

  • gradlew assemble :可以编译出release包和debug包,可以使用gradlew assembleRelease或者gradlew assembleDebug来单独编译一种包

  • gradlew check:用于检测任务

  • gradlew clean:清理项目的中间数据

  • gradlew build:构建项目,相当于同时执行了check任务和assemble任务

总结

以上就是一些Gradle的基础的使用方式,对于入门的初学者已经足够的,更高级和详细的配置可以查看Android给出的文档:Android Plugin DSL Reference 或者是查看Gradle的官网: Gradle官网

更多相关文章

  1. android studio for android learning (九) android之Adapter用法
  2. Android(安卓)APK反编译详解(附图)
  3. android ftp 客户端编写(ftp4j)
  4. Android中adb push和adb install的使用区别
  5. Android之——多线程下载示例
  6. Android读写XML(下)——创建XML文档
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. android 每周学习笔记及总结(每周更新)
  2. Android 中 WebView 使用漏洞相关介绍
  3. Dagger 2 在 Android 上的使用(一)
  4. android遇到的BUG
  5. 什么是android(What Is Android?)
  6. Android(安卓)JNI入门第五篇——基本数据
  7. Android AIDL 跨进程服务 Proxy/Stub
  8. Android如何获取多媒体文件信息
  9. Android ViewPager与WP Pivot的视图对比
  10. Anatomy of an Android Application - 剖