Android Studio Gradle 介绍 3

Android Gradle实战演练

前面讲了那么多gradle的基础语法,接下来就来看看实际的Android工程中gradle是如何使用的吧。

0x00 看看Android Studio默认的Gradle配置

首先来看看gradle默认的配置。在用Android Studio创建好一个工程之后,打开左侧的目录树:
11
图中我选中的那几个文件:两个build.gradle文件,一个gradle-wrapper.properties文件,还有一个setting.gradle,这几个文件就是我们在Android工程中常用到的。

首先在工程目录下找到这个文件:wrapper.properties,打开他:

#Mon Dec 28 10:00:20 PST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

这个文件的用途,是让自己的工程配置gradle,直接看最后一句话:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

这个uri表明本工程使用gradle是要从https://services.gradle.org/distributions/gradle-2.10-all.zip下载的gradle2.10版本。

然后打开工程目录看一看,会发现根目录下有一个build.gradle和一个seeting.gradle,在app目录下有一个build.gradle,根据上一篇blog我们知道,每一个要构建的Project下都会有一个build,gradle,所以此处应该是在一个根Project下有多个要构建的Project,换算到Android中就是一个项目中构建多个Module,因此在这个setting.gradle文件中会有如下代码:

include ':app'

这就是说每构建一个module就要在这里配置一下,而Android Studio已经很智能的帮我们配好了,手动增加一个module,再打开setting.gradle:

include ':app', ':demo'

看,果然这里又多了一项配置,说明前面我们理解的没有问题。

接下来看看两个build.gradle文件,首先看看根目录下的build.gradle:

22

这个文件的内容主要包含了两个方面:一个是声明仓库的源:jcenter(), jcenter可以理解成是一个中央远程仓库,兼容maven中心仓库。另一个是声明了android gradle plugin的版本。
然后看看app目录下的build.gradle:
33

44
如上这些属性都是默认的,我们还可以自定义一些东西,比如自动打包debug等鞥,这些以后再说。

0x01 花式使用

除了上一节中的默认属性外,我们可以自己定义一些。

配置应用签名信息

在build.gradle中加入如下代码:
55
其中,toreFile是签名证书文件,keyAlias是别名,keyPassword是key的密码,storePassword是证书的密码。配好好相关信息即可在buildTypes配置使用。

混淆编译

我们在生成realeas版本后,如果不希望别人反编译我们的app,可以在构建时选择混淆编译,只需如下设置:
66
minifyEnabled为true表示启用混淆,proguardFile是混淆使用的配置文件,这里是module根目录下的proguard.cfg文件

打包优化

Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。要使用只需如下:

77

多渠道打包

在国内有很多app市场,发布自己的app时也就需要多渠道打包了,也就是说为不同的应用市场作不同的配置,只需加上productFlavors属性,具体怎么操作,请跳转到这篇文章看看:Gradle多渠道打包详解

0x02 统一管理

通过一些gradle的api,我们可以把所有的属性统一作管理。比如先在根目录下创建一个config.gradle,内容如下:

ext {
    configure = [
            compileSdkVersion:23,
            buildToolsVersion:"23.0.3",
            applicationId:"com.levent_j.learngradle",
            minSdkVersion:14,
            targetSdkVersion:23,
            versionCode:1,
            versionName:"1.0",
    ]

    dep_version = [
            'appcompat-v7':'23.4.0',
            'MaterialTabs':'0.11',
            'MaterialDesign':'1.5@aar',
            'library':'2.1.4',
            'recyclerview-v7':'23.0.0',
            'cardview-v7':'23.0.0',
            'datetimepicker':'0.1.2',
            'circleimageview':'2.0.0',
    ]

    dep_path = [
            'appcompat-v7':'com.android.support',
            'MaterialTabs':'it.neokree',
            'MaterialDesign':'com.github.navasmdc',
            'library':'com.rengwuxian.materialedittext',
            'recyclerview-v7':'com.android.support',
            'cardview-v7':'com.android.support',
            'datetimepicker':'com.github.citux',
            'circleimageview':'de.hdodenhof',
    ]
}

这就是我们统一的配置文件,那么怎么使用呢?只需在app的build.gradle中这样写:

apply plugin: 'com.android.application'

def config = rootProject.ext.configure;
def dep_version = rootProject.ext.dep_version;
def dep_path = rootProject.ext.dep_path;

android {
    compileSdkVersion config.compileSdkVersion
    buildToolsVersion config.buildToolsVersion

    defaultConfig {
        applicationId config.applicationId
        minSdkVersion config.minSdkVersion
        targetSdkVersion config.targetSdkVersion
        versionCode config.versionCode
        versionName config.versionName
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile dep_path['appcompat-v7']+':appcompat-v7:'+dep_version['appcompat-v7']
    compile dep_path['MaterialTabs']+':MaterialTabs:'+dep_version['MaterialTabs']
    compile dep_path['MaterialDesign']+':MaterialDesign:'+dep_version['MaterialDesign']
    compile dep_path['library']+':library:'+dep_version['library']
    compile dep_path['recyclerview-v7']+':recyclerview-v7:'+dep_version['recyclerview-v7']
    compile dep_path['cardview-v7']+':cardview-v7:'+dep_version['cardview-v7']
    compile dep_path['datetimepicker']+':datetimepicker:'+dep_version['datetimepicker']
    compile dep_path['circleimageview']+':circleimageview:'+dep_version['circleimageview']
}

通过这样统一的配置,gradle的各种设置也显得很清晰了。本系列文章到此结束,如果有不懂的地方,请参考官方文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值