Gradle配置总结

作者: 奔跑吧李博 | 来源:发表于2018-10-10 20:41 被阅读34次

伴随着 Android Studio2.0的发布, Gradle 也进行了一次非常大的升级,叫Instant Run.
在 Gradle 出现以前Android 也有对应的编译工具叫 Ant。

Project和Task

每个项目的编译至少有一个 Project,一个 build.gradle就代表一个project,每个project里面包含了多个task,task 里面又包含很多action,action是一个代码块,里面包含了需要被执行的代码。

编译过程分为三个阶段:

  • 初始化阶段:创建 Project 对象,如果有多个build.gradle,也会创建多个project.
  • 配置阶段:在这个阶段,会执行所有的编译脚本,同时还会创建project的所有的task,为后一个阶段做准备。
  • 执行阶段:在这个阶段,gradle 会根据传入的参数决定如何执行这些task,真正action的执行代码就在这里.
Gradle文件配置层级:
  • 一个工程包含一个setting.gradle文件和一个build.gradle文件。可能有多个Module,每个Module有自己的一个build.gradle。
  • setting.gradle: setting文件定义哪些module需要加入到编译过程

  • 工程的build.gradle:该build文件最终会被应用到所有Module中

gradle文件配置示例:

apply plugin: 'com.android.application'

android {

    signingConfigs {
        config {
            keyAlias ''
            keyPassword ''
            storeFile file('keystore.jks')
            storePassword ''
        }
    }

    compileSdkVersion 27
    defaultConfig {
        applicationId ""
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        flavorDimensions "versionCode"

        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true

        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11 -frtti -fexceptions"
            }
        }

        ndk {
            abiFilters 'armeabi-v7a'
        }

        lintOptions {
            abortOnError false
        }
    }

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }

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

    flavorDimensions "tier" 
    productFlavors {
        yingyongbao { dimension "tier" }
    }

    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
}

android.lintOptions {   //忽略中英文大小写
    checkReleaseBuilds false
    abortOnError false
}

allprojects {
    repositories {
        mavenCentral()
    }
}

repositories {
    flatDir {
        dir 'libs'

    }
}

dependencies {
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.jakewharton:butterknife:7.0.1'
}

配置说明:

apply plugin:

表明应用的插件的类型,工程项目是com.android.application类型,而Module则是com.android.library

android

这是编译文件中最大的代码块,关于android 的所有特殊配置都在这里

defaultConfig

程序的默认配置

externalNativeBuild

native编译支持
常用属性
1.cmake:CMake工具编译选项。
2.ndkBuild:ndk-build选项。

buildTypes

分为release版本和debug版本
常用属性:

minifyEnabled 是否开启混淆
shrinkResources 是否去除无用资源
signingConfigs 签名配置信息
name:build type的名字
proguardFiles:混淆文件

lintOptions

Lint工具可选项参数
常用属性
abortOnError false如果发现错误,lint工具是否应该退出这个程序。true表示退出。

productFlavors

项目打包渠道配置

flavorDimensions "tier" 
productFlavors {
        yingyongbao { dimension "tier" }
    }
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
signingConfig

签名配置信息

signingConfigs {
        config {
            keyAlias ''
            keyPassword ''
            storeFile file('keystore.jks')
            storePassword ''
        }
    }

keyAlias 签名key的别名
keyPassword 签名key的密码
storeFile file 签名key的路径
storePassword store签名密码
v1SigningEnabled:是否使用jar签名(又名v1签名)
v2SigningEnabled:是否使用apk签名(又名v2签名)

repositories

代码仓库:Gradle支持从maven中央仓库和JCenter上获取构件

dependencies

dependencies属于gradle 的依赖配置。它定义了当前项目需要依赖的其他库。
我们在引用库的时候,每个库名称包含三个元素:发布者标识:库名:版本号
例如:

implementation 'com.alibaba:fastjson:1.2.8'

如果为implementation 'com.alibaba:fastjson:1.2.+'表示会使用库的最新版本。但是每次编译都要去做网络请求查看是否有新版本导致编译减慢。

gradle.properties配置
  • 加大可用编译内存:
    org.gradle.jvmargs=-Xmx1024m

  • 开启编译守护进程
    org.gradle.daemon=true

  • 开启并行编译
    org.gradle.parallel=true

相关文章

  • Gradle配置总结

    伴随着 Android Studio2.0的发布, Gradle 也进行了一次非常大的升级,叫Instant Ru...

  • gradle配置总结

    1.gradle的ext属性 ext属性是ExtensionAware类型的一个特殊的属性,本质是一个Map类型的...

  • Gradle-配置文件拆解

    扔物线课程学习总结 Gradle配置文件拆解 Gradle项目结构,以及Task Gradle执行的生命周期 1....

  • 01.Gradle的使用

    * 关于Gradle配置的小结关于Gradle配置的小结 - 推酷 - Gradle基础配置Gradle基础 -b...

  • gradle加速

    gradle自身配置 修改gradle配置文件gradle.properties配置如下: IDE配置(IJ为例)

  • Gradle 常用配置总结

    这里分享下我在日常开发中对 Gradle 的常用配置规则 一、版本号配置 当项目逐渐演进的过程中,主工程依赖的 M...

  • Android Gradle 配置总结

    本文主要总结了module name/app/build.gradle文件中用到的配置属性。 1. 资源文件目录 ...

  • Android 代码检查自动化

    检查工具:Lint,FindBugs任务配置:jenKins任务配置gradle gradle配置 配置gradl...

  • Idea插件开发中使用ProGuard混淆代码

    配置gradle插件 gradle配置ProGuard插件 添加混淆task 配置task依赖关系 配置混淆文件 ...

  • GreenDao3.X的基本使用

    1、在project的Gradle中配置: 2、在app的Gradle中配置: 3、在app的Gradle中配置数...

网友评论

    本文标题:Gradle配置总结

    本文链接:https://www.haomeiwen.com/subject/zdvvixtx.html