一、gradle作用
- 相当于eclipse ant
- 用于构建
1.1 构建
- 构建:生成app的过程,执行一些的命令(appt,aidl,javac,dex,apkbuilder,jarsinger,zipalign)
- 依赖管理:管理依赖的jar包
1.2 查看错误
- 方式:
- message控制台进行查看
- gradle console控制台进行查看
- log文件路径:
C:\Users\用户名\.AndroidStudio1.5\system\log\idea.log
二、Gradle Scripts位置
- 切换到Android目录下查看
三、基本语法
3.1 本地依赖
- 说明: gradle 作为构建工具,能够很方便的使用本地jar包
示例:
dependencies { //单文件依赖 compile files('libs/android-support-v4.jar') //某个文件夹下面全部依赖 compile fileTree(dir: 'libs', include: '*.jar') } android { }
3.2 远程依赖
仓库
- 仓库:简单理解就是存的一些jar包云端
- maven
- ivy
- jcenter仓库地址
常见写法
- mavenCentral()别名,表示依赖是从Central Maven 2 仓库中获取的。
- jcenter()别名,表示依赖是从Bintary’s JCenter Maven 仓库中获取的。
- mavenLocal()别名,表示依赖是从本地的Maven仓库中获取的
仓库地址举例
repositories { ivy { url "http://ivy.petrikainulainen.net/repo" } } repositories { maven { url "http://maven.petrikainulainen.net/repo" } } repositories { mavenCentral() } repositories {//默认仓库 jcenter()//它是当前世界上最大的Java和Android开源软件构件仓库 }
- 说明: gradle 同时支持maven,ivy
示例(maven):
repositories { //从中央库里面获取依赖 mavenCentral() //或者使用指定的本地maven 库 maven{ url "file://F:/githubrepo/releases" } //或者使用指定的远程maven库 maven{ url "远程库地址" } } dependencies { //应用格式: packageName:artifactId:version compile 'com.google.android:support-v4:r13'} android { }
四、各个gradle详解
4.1 Project位置
setting.gradle文件
- 说明: 针对module的全局配置,它的作用域所包含的所有module
示例:
//文件中的 app, extras:ShimmerAndroid 都是module,如果还有其他module都需要按照如上格式加进去。 include ':app', ':extras:ShimmerAndroid'
build.gradle文件
- 说明: 整个项目的gradle基础配置文件
- 内容:
- repositories(声明仓库的源)
- android gradle plugin的版本
示例:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
4.2 Module位置(app中的build.gradle文件)
- 说明: 为app文件夹下这个Module的gradle配置文件
内容:
- apply plugin声明
android 相关属性:
- 版本
- 混淆设置
多渠道打包
清单文件中
<meta-data android:name="key" android:value="${CHANEL_VALUE}"/>
- 模块中添加productFlavors
- 调用manifestPlaceholders给清单文件进行赋值
- lint检查设置
dependencies: libs目录下的jar包依赖
示例:
// 声明是Android程序 apply plugin: 'com.android.application' android { // 编译SDK的版本 compileSdkVersion 21 // build tools的版本 buildToolsVersion "21.1.1" defaultConfig { // 应用的包名 applicationId "me.storm.ninegag" minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0.0" } // java版本 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } buildTypes { release { // 是否进行混淆 minifyEnabled false // 混淆文件的位置 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } //多渠道打包 productFlavors{ anzhi{ manifestPlaceholders = [CHANEL_VALUE :"anzhi"] } googleplay{ manifestPlaceholders = [CHANEL_VALUE :"googleplay"] } androidmarket{ manifestPlaceholders = [CHANEL_VALUE :"androidmarket"] } } // 移除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模块 compile project(':extras:ShimmerAndroid') }