目录:
1、Gradle初识
2、Gradle加速
3、AndroidStudio工程下的build.gradle文件
4、AndroidStudio导入工程还是卡卡卡???
1. Gradle是什么?
1.1. 概念
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。一种依赖管理工具,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。 用于自动化构建、测试、发布打包。
1.2. Gradle的Project与Task
Project工程:一个待编译的工程称为一个Project工程
Task任务:每一个Project在构建的时候都包含一些列的任务,例如在AndroidStudio中的Gradle编译就包括:
- Java源码编译任务
- 资源编译任务
- JNI编译任务
- lint检查任务
- 打包生成apk任务
- 签名任务等等
1.3. Gradle做什么用?
- 依赖管理
- 版本发布
- 差异管理
2. Gradle加速
安卓开发过程中最不能忍的就是Gradle那龟速的构建速度。AndroidStudio使用最郁闷莫过于导入一个工程等上大半天。所以提高项目的构建速度势在必行。
- 1、给Gradle配置一个gradle.properties文件
在用户目录下的.gradle
文件夹里新增一个名为gradle.properties
的gradle属性配置文件。
在文件中添加以下内容:
//让gradle使用单独的守护进程
org.gradle.daemon=true
//让gradle并行编译
org.gradle.parallel=true
//让gradle在需要的时候才配置
org.gradle.configureondemand=true
//增加gradle运行的java虚拟机的大小
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
这里是对所有的工程生效。
如果将gradle.properties文件只配置在单个工程下,那么只对该工程有效。
- 使用国内的maven仓库,这里用的是阿里云的。
在用户目录下的.gradle
文件夹里新增一个名为ini.gradle
的gradle初始化配置文件。
在文件中添加以下内容:
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
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
}
}
}
- 修改AndroidStudio的配置:offline的工作模式,这样就不用每次都去抓取最新的内容,本地有就直接使用本地的:
同时对Compiler做如下配置:
- 修改本地仓库的位置,避免占用C盘内存,影响运行速度。
在另一个盘符下新建一个文件夹,将用户目录下的.gradle文件夹全部拷贝到该目录下。比如我是迁移到T盘的GradleRepo文件夹下。
然后添加系统环境变量:
GRADLE_USER_HOME=t:/GradleRepo/.gradle
3. AndroidStudio工程下的build.gradle文件
项目根目录下的build.gradle内容,默认包含三个标签:
- buildscript
- allpprojects
- task clean
// Top-level build file where you can add configuration options common to all sub-projects/modules.
// gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
buildscript {
repositories { // 声明仓库源
jcenter() // 中央远程仓库,兼容maven中心仓库,性能更优
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0' // 声明gradle插件的版本
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
// 所有Project默认的仓库源
allprojects {
repositories {
jcenter()
}
}
// 声明一个名为clean的任务,作用是每当修改settings.gradle文件后点击同步,就会删除rootProject.buildDir下的文件(清除了External Libraries里的包,重新添加一次)
task clean(type: Delete) {
delete rootProject.buildDir
}
应用android app目录下的build.gradle文件,默认包含三个标签:
- apply plugin
- android
- dependencies
//声明类型是安卓应用
apply plugin: 'com.android.application'
android {
compileSdkVersion 25 // 编译的SDK版本
buildToolsVersion "25.0.2" // 编译的tools版本
// 一些默认的配置
defaultConfig {
applicationId "com.lisathecat.mvp.my_mvp_app" // 包名
minSdkVersion 15 // 支持的最低SDK版本
targetSdkVersion 25 // 支持的目标版本
versionCode 1 // 版本号
versionName "1.0" //版本名称
//AndroidJUnitRunner单元测试在gradle文件下的配置
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes { //build类型
release {//发布配置
minifyEnabled false //关闭混淆
//指定proguard文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {//调试配置
signingConfig signingConfigs.release
}
}
}
dependencies {
// 编译本地libs目录下的所有依赖
compile fileTree(dir: 'libs', include: ['*.jar'])
// 测试编译配置
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
// 项目添加的引用包
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:design:25.2.0'
compile 'com.android.support.constraint:constraint-layout:1.0.1'
testCompile 'junit:junit:4.12'
}
4. AndroidStudio导入工程还是卡卡卡???
AndroidStudio安装的同时也会安装Gradle插件,在用户的根目录下同时生成.gradle
文件,在.gradle/wrapper/dists
目录下面有gradle-versioncode-all
,如:gradle-3.3-all
,gradle-2.14.1-all
这样的文件夹。
在导入安卓工程的时候常常会出现卡住的现象,那是因为.gradle
里面没有工程设置的构建工程的gradle版本,所以AndroidStudio在默默下载对应的gradle版本。
可以考虑先修改配置文件再导入。
- Gradle,包括Gradle使用版本和Android插件版本
- JDK,这个所有的Java程序都需要
- Compile Sdk—需要的Android SDK
- Build Tool—编译工具
- 众多第三方包
参考资料:
AndroidStudio下gradle的入门介绍与使用
加速Android Studio的Gradle构建速度
学习Android Studio里的Gradle
AndroidStudio导入太慢?。。。