Gradle基础介绍

Android Studio项目包含了一个顶级的构建文件和适用于每个模块的构建文件。在项目路径下有个 build.gradle,这些都是纯文本文件,使用了Groovy语法结合了Android plugin for Gradle提供的标签来配置项目的构建。

每个项目至少有一个project,一个build.gradle就代表一个project,每个project可以包含很多个task,task中包含多个action,action是一个代码块,里面包含需要执行的代码。

一个简单的build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23 
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.1.1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile project(":lib")
    compile 'com.android.support:appcompat-v7:19.0.1'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

apply plugin 构建版本,
普通的安卓应用程序的时候

apply plugin: 'com.android.application'

作为安卓modle形式

apply plugin: 'com.android.library'

java项目

 apply plugin: 'java'

Android 最大的一个task

compileSdkVersion 23  //SDK的版本号
buildToolsVersion "23.0.1" //构建工具的版本,其中包括了打包工具aapt、dx等等

defaultConfig默认配置,注意,如果在AndroidMainfest.xml里面定义了与这里相同的属性,会以gradle的为主。
applicationId的选项:在AndroidManifest.xml中,那里定义的包名有两个用途:一个是作为程序的唯一识别ID,防止在同一手机装两个一样的程序;另一个就是作为我们R资源类的包名。修改Manifest这个ID会导致所有用引用R资源类的地方都要修改。但是如果修改gradle中的applicationId只会修改当前程序的ID,而不会去修改源码中资源文件的引用。

buildTypes: 编译类型,针对每个类型可以有不同的编译配置,不同的编译配置对应的有不同的编译命令。默认的有debug、release 的类型。

dependencies:是属于gradle 的依赖配置。它定义了当前项目需要依赖的其他库。

Android task块

有四个基本的 task:

assemble: 对所有的 buildType 生成 apk 包。

clean : 移除所有的编译输出文件,output路径下的文件都被清空

check : 执行lint检测编译。

build : 同时执行assemble和check命令

在实际项目中会根据不同的配置,会对这些task 设置不同的依赖。
比如 默认的 assmeble 会依赖 assembleDebug 和assembleRelease

如果直接执行assmeble,最后会编译debug,和release 的所有版本出来。
如果我们只需要编译debug 版本,我们可以运行assembleDebug。
除此之外还有一些常用的新增的其他命令,比如 install命令,会将编译后的apk 安装到连接的设备。
还有其他的一些命令,比如 check命令会生成lint-results.html.在build/outputs中。

BuildConfig

最常用的用法就是通过BuildConfig.DEBUG来判断当前的版本是否是debug版本

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }

        proguard {
            minifyEnabled true
            proguardFile getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }

       debug {
            minifyEnabled false
            signingConfig signingConfigs.config
        }

    }

上面定义3中buildTypes ,可以设置proguard 为混淆,但是输出日志,这种是为了测试将要上线版本功能,并且可以查看到日志;release包就是发布的正式包了,日志关闭,且混淆代码;debug包就是平时开发用的包,打包时间快,没有混淆,有日志。
功能非常强大,我们可以通过在这里设置一些key-value对,这些key-value 对在不同编译类型的 apk 下的值不同,比如我们可以为debug ,proguard 和release 环境定义不同的服务器

minifyEnabled 设置混淆是否开启

dependencies 依赖

  dependencies {
        compile fileTree(dir: 'libs', includes: ['*.jar'])
        compile project(':honjane-library')
        betaCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
    }

引用库,有几种形式:
1、引用本地jar,aar包
2、引用module project
3、引用远程仓库文件,每个库名称包含三个元素:组名:库名称:版本号

Repositories

代码仓库,dependency 就是从这里下载的,Gradle 支持三种类型的仓库:Maven,Ivy和一些静态文件或者文件夹
gradle 支持多种 Maven 仓库,一般是用共有的jCenter就可以了。

 repositories {
        jcenter()
        maven{
             //公司私有的仓库中
               url "http://172.30.11.100/maven/tool" 
                credentials{//如果有密码
                   username ‘honjane’
                   password ‘111111’
                }
           }

      flatDir{//相对路径配置本地仓库,我们可以通过配置项目中存在的静态文件夹作为本地仓库
           dirs ‘aars’
       }
    }

Android task中除了上面这些 ,剩下的就是写Options,Options是一些执行代码块,后面文章介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值