微信号:jszj2014215

介绍:主要分享移动互联网的相关产品和资讯,关注你将学习到更多,在互联网的当下你会赚更多的钱...

Android中Gradle详细实用指南

2017-04-16 08:42 Android技术之家

Android工程中的Gradle

下面简述对我们工程最重要的几个Gradle文件,后续也会围绕他们进行详细讲解和补充

  • 工程Project 中的 build.gradle : 工程控制Gradle编译配置

  • 模块module中的 build.gradle : 控制每个Module的编译过程

  • gradle.properties : gradle动态参数的配置文件

  • local.properties : 本地的配置,如:SDK位置

  • gradle-wrapper.properties :gradle本地代理,声明了指向目录和版本

    • distributionUrl : 指定gradle版本不存在时,就从Value的地址中去下载。很多时候,我们只要版本换成我们本地存在的gradle版本就可以了

  • settings.gradle : 配置Gradle中的Module管理

    常用Gradle Task

    ~ 表示 gradlew (Mac 使用gradle ,没有w)

  • gradlew task -all : 罗列出所有Task ,同时携带具体作用和相互关系

  • gradlew assembleDebug : 导出所有渠道测试包

    • ~ assembleRelease : 导出所有渠道正式包

    • ~ assembleBaiduDebug --stacktrace : 导出指定渠道测试包,同时携带异常信息

  • ~ --stop : 立即停止编译

  • ~ check : 检查任务

  • ~ build : 执行了 check和assemble

  • ~ clean : 清除所有中间编译结果

动态参数配置

在Gradle中动态配置资源参数

我们可以根据各自的需求在不同的领域(如:buildType 的debug, defaultConfig ...)下去动态替换或配置我们项目中所使用到的资源,如 log 开关, 针对不同渠道的对应内容字段,不同版本定义引入的不同值等等

首先说清一点,对于动态资源在 build.gradle 中多个领域中的使用,会遵循一下顺序来进行覆盖:

buildType > productFlavor > defaultConfig > Manifest中的配置 > 依赖的第三方库的配置 > 任意领域中的默认值(也就是没有设置值)

  1. Manifest 占位符: 可以动态配置Manifest的参数

在Manifest的Application节点下        //这里以友盟为例
        <!-- 友盟统计相关meta-data -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="balabalabala" />
        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="${UMENG_CHANNEL_VALUE}" />

在build.gradle中对参数进行动态配置
 productFlavors {
        baidu {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
        }
}
  1. gradle.properties 的使用

    • 系统属性:
      配置: systemProp.proName