AndroidStudio使⽤教程(四):Gradle基础
其实很早之前也写了⼀篇Gradle的基础博客,但是时间很久了,现在Gradle已经更新了很多,所以暂且结合Stduio 1.0正式版与最新的Gradle语法来详细讲解下,⼩伙伴们直接跟我⼀步步来学习吧。
什么是Gradle?
Gradle是⼀种依赖管理⼯具,基于Groovy语⾔,⾯向Java应⽤为主,它抛弃了基于XML的各种繁琐配置,取⽽代之的是⼀种基于Groovy的内部领域特定(DSL)语⾔。
安装Gradle
在中新建项⽬成功后会下载Gradle,貌似这个过程不也是可以下载,但是访问特别慢,建议下载。那么下载的Gradle 到什么地⽅呢?
Mac上会默认下载到 **/Users/<⽤户名>/.gradle/wrapper/dists** ⽬录
Win平台会默认下载到 C:\Documents and Settings<⽤户名>.gradle\wrapper\dists ⽬录
你会看到这个⽬录下有个 -all 的⽂件夹, 如果下载实在太慢,但是⼜不想的话,可以⾃⼰
⼿动到Gradle官⽹下载对应的版本,然后将下载的.zip⽂件(也可以解压)复制到上述的-all ⽂件夹下,不过还是建议让它直接下载的好。
Gradle 基本概念
下⾯就以我的开源项⽬9GAG来详细讲解下和Gradle相关的知识, 和Gradle相关的⼏个⽂件⼀般有如下⼏个:
红⾊标记部分从上到下咱们来⼀步步分析:
1. 9GAG/adle
这个⽂件是app⽂件夹下这个Module的gradle配置⽂件,也可以算是整个项⽬最主要的gradle配置⽂件,我们来看下这个⽂件
的内容:
// 声明是Android程序
apply plugin: 'com.android.application'
android {
// 编译SDK的版本
compileSdkVersion 21
// build tools的版本
buildToolsVersion "21.1.1"
defaultConfig {
// 应⽤的包名
applicationId "me.storm.ninegag"
minSdkVersion 14android学习教程
targetSdkVersion 21
versionCode 1
versionName "1.0.0"
}
// java版本
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
debug {
// debug模式
}
release {
// 是否进⾏混淆
minifyEnabled false
// 混淆⽂件的位置
proguardFiles getDefaultProguardFile(''), ''
}
}
// 移除lint检查的error
lintOptions {
abortOnError false
}
}
dependencies {
// 编译libs⽬录下的所有jar包
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:21.0.2'
compile 'id:library:1.0.5'
compile 'com.alexvasilkov:foldable-layout:1.0.1'
// 编译extras⽬录下的ShimmerAndroid模块
compile project(':extras:ShimmerAndroid')
}
这⾥需要说明⼏点:
⽂件开头apply plugin是最新gradle版本的写法,以前的写法是apply plugin: ‘android', 如果还是以前的写法,请改正过来。buildToolsVersion这个需要你本地安装该版本才⾏,很多⼈导⼊新的第三⽅库,失败的原因之⼀是build version的版本不对,这个可以⼿动更改成你本地已有的版本或者打开 SDK Manager 去下载对应版本。
applicationId代表应⽤的包名,也是最新的写法,这⾥就不在多说了。
android 5.0开始默认安装jdk1.7才能编译,但是由于mac系统⾃带jdk的版本是1.6,所以需要⼿动下载jdk1.7并配置下,具体可以见我这篇博客
minifyEnabled也是最新的语法,很早之前是runProguard,这个也需要更新下。
proguardFiles这部分有两段,前⼀部分代表系统默认的android程序的混淆⽂件,该⽂件已经包含了基本的混淆声明,免去了我们很多事,这个⽂件的⽬录在 **/tools/** , 后⼀部分是我们项⽬⾥的⾃定义的混淆⽂件,⽬录就在 **** , 如果你⽤Studio 1.0创建的新项⽬默认⽣成的⽂件名是 **proguard-rules.pro** , 这个名字没关系,在这个⽂件⾥你可以声明⼀些第三⽅依赖的⼀些混淆规则,由于是开源项⽬,9GAG⾥并未进⾏混淆,具体混淆的语法也不是本篇博客讨论的范围。最终混淆的结果是这两部分⽂件共同作⽤的。
compile project(‘:extras:ShimmerAndroid')这⼀⾏是因为9GAG中存在其他Module,不知道Module的概念可以看下这篇博客,总之你可以理解成Android Library,由于Gradle的普及以及远程仓库的完善,这种依赖渐渐的会变得⾮常不常见,但是你需要知道有这种依赖的。
以上⽂件⾥的内容只是基本配置,其实还有很多⾃定义部分,如⾃动打包debug,release,beta等环境,签名,多渠道打包等,后续会单独拿出来讲解。
2. 9GAG/extras/adle
每⼀个Module都需要有⼀个gradle配置⽂件,语法都是⼀样,唯⼀不同的是开头声明的是 apply plugin: ‘com.android.library'
3. 9GAG/gradle
这个⽬录下有个 wrapper ⽂件夹,⾥⾯可以看到有两个⽂件,我们主要看下 gradle-wrapper.properties 这个⽂件的内容:
#Thu Dec 18 16:02:24 CST 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\:///distributions/gradle-2.2.1-all.zip
可以看到⾥⾯声明了gradle的⽬录与下载路径以及当前项⽬使⽤的gradle版本,这些默认的路径我们⼀般不会更改的,这个⽂件⾥指明的gradle版本不对也是很多导包不成功的原因之⼀。
4. adle
这个⽂件是整个项⽬的gradle基础配置⽂件,我们来看看这⾥⾯的内容
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ls.build:gradle:1.0.0'
}
}
allprojects {
repositories {
jcenter()
}
}
内容主要包含了两个⽅⾯:⼀个是声明仓库的源,这⾥可以看到是指明的jcenter(), 之前版本则是mavenCentral(), jcenter可以理解成是⼀个新的中央远程仓库,兼容maven中⼼仓库,⽽且性能更优。另⼀个是声明了android gradle plugin的版
本,android studio 1.0正式版必须要求⽀持gradle plugin 1.0的版本。
5. adle
这个⽂件是全局的项⽬配置⽂件,⾥⾯主要声明⼀些需要加⼊gradle的module,我们来看看9GAG该⽂件的内容:
include ':app', ':extras:ShimmerAndroid'
⽂件中的 app, extras:ShimmerAndroid 都是module,如果还有其他module都需要按照如上格式加进去。
总结
关于gradle的基础知识就介绍到这⾥,接下来会介绍⼀种我常⽤的快速⽅便的编译查看第三⽅开源项⽬的⽅法,如何导⼊Android Studio,Gradle常⽤基本命令,多渠道打包配置等。有疑问或者发现错误欢迎⼤家直接博客留⾔。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。