Gradle
Gradle与Ant、Maven类似,是一种项目构建工具,之前使用的Eclipse是使用Ant来实现项目构建的。在AS中第一次创建项目的时候,会自动下载Gradle在AS中第一次创建项目的时候,会自动下载Gradle。不过对国外的网站,网速太慢。
- 使用本地已经下载好的gradle版本:File->Settings->搜索gradle,默认下载路径为本机用户下的那个.gradle里面。让Android Studio先自行下载一会Gradle,这样可以确定Gradle的安装目录和Gradle的版本。
- 从Gradle的官网上下载指定的版本(不一定是最新的,我安装的Android Studio需要的是gradle-2.4版本),然后将下载的zip包扔到那个无规律字符串目录下。记住:不需要解压,android studio自己会去解包。
项目gradle文件介绍:
1、MyApplication/app/build.gradle
整个项目最主要的gradle配置文件
//声明是Android程序,以前的写法:apply plugin: ‘android’,每一个Module都需要有一个gradle配置文件,语法都是一样,唯一不同的是开头声明的是 apply plugin: ‘com.android.library’(如果由其他的module)
apply plugin: 'com.android.application'
android {
//编译SDK的版本,就是这个项目需要的android SDK版本;
compileSdkVersion 21
//android构建工具的版本,目录位于..your_sdk_path/build-tools/XX.XX.XX,buildToolsVersion的版本需要>=CompleSdkVersion; 高版本的build-tools 可以构建低版本编译的android程序;
buildToolsVersion "21.1.1"
defaultConfig {
// 应用的包名,applicationId代表应用的包名
applicationId "me.storm.ninegag"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0.0"
}
// java版本,android 5.0开始默认安装jdk1.7才能编译
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
debug {
// debug模式
}
release {
// 是否进行混淆
minifyEnabled false
// 混淆文件的位置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
// 移除lint检查的error
lintOptions {
abortOnError false
}
}
dependencies {
// 编译libs目录下的所有jar包
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:21.0.2'
compile 'com.etsy.android.grid:library:1.0.5'
compile 'com.alexvasilkov:foldable-layout:1.0.1'
// 编译extras目录下的ShimmerAndroid模块,这一行是因为9GAG中存在其他Module
compile project(':extras:ShimmerAndroid')
}
2、MyApplication/gradle/wrapper/gradle-wrapper.propreties
这个目录下有个 wrapper 文件夹,里面可以看到有两个文件,我们主要看下 gradle-wrapper.properties 这个文件的内容:
#Wed May 24 22:58:37 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
可以看到里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本,这些默认的路径我们一般不会更改的,这个文件里指明的gradle版本不对也是很多导包不成功的原因之一。gradle-wrapper的作用就是使用统一的方式来管理gradle,保证gradle使用的是统一的版本。说明几点:
- android studio首先从distributionBase/distributionPath查找gradle。然后,从zipStoreBase/zipStorePath查找gradle。
- 如果上述都没有找到合适的gradle,则从distributionUrl指定的url去下载gradle。
注意:这里需要在.bashrc中增加GRADLE_USER_HOME的变量定义。distributionUrl 决定了这个项目使用的gradle版本,也就是说不同的项目可以使用不同的gradle版本
3、MyApplication/build.gradle
这个文件是整个项目的gradle基础配置文件:
buildscript {
repositories {
jcenter()
}
//配置的就是android gradle 插件的版本,gradle插件的版本号和gradle版本号是对应的,较新的插件版本需要要求较新版的gradle,所以提示你更新gradle; // gralde插件的具体版本。
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
}
}
allprojects {
repositories {
jcenter()
}
}
内容主要包含了两个方面:
- 一个是声明仓库的源,这里可以看到是指明的jcenter(), 之前版本则是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优
- 另一个是声明了android gradle plugin的版本,android studio 1.0正式版必须要求支持gradle plugin 1.0的版本。
4、MyApplication/settings.gradle
这个文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module,我们来看看9GAG该文件的内容:
include ':app', ':extras:ShimmerAndroid'
文件中的 app, extras:ShimmerAndroid 都是module,如果还有其他module都需要按照如上格式加进去。