组件化gradle语法,抽取confg.gradle

本文深入探讨了Gradle作为构建工具的独特优势,它基于Groovy脚本,提供灵活的配置选项。通过示例展示了如何创建并引入自定义配置文件,包括设置项目属性、环境变量、依赖管理等。同时,解释了如何在子模块中引用这些配置,简化构建过程。
摘要由CSDN通过智能技术生成

Gradle

●Gradle构建工具的出现让工程有无限可能
●Gradle核心是基于Groovy脚本语言,Groovy脚本基于Java且拓展了Java。
因此Gradle需要依赖JDK和Groovy库。
●和ant、maven构建有区别,gradle是一 种编程思想

代码+讲解样式

//第1种打印字符串方式: 
println("hello gradle")
//第2种打印字符串方式:
println "hello studio"

点击sync打印。

抽取公共配置

创建任意命名的.gradle文件:confg.gradle

// 添加多个自定义属性,可以通过ext代码块
ext {

    username = "simon"

    // 生产/开发环境(正式/测试)
    isRelease = true

    // 建立Map存储,对象名、key都可以自定义,groovy糖果语法,非常灵活
    androidId = [
            compileSdkVersion: 28,
            buildToolsVersion: "29.0.0",
            minSdkVersion    : 19,
            targetSdkVersion : 28,
            versionCode      : 1,
            versionName      : "1.0"
    ]

    appId = [
            app    : "com.netease.modular.gradle",
            library: "com.netease.modular.library"
    ]

    // 生产/开发环境URL
    url = [
            "debug"  : "https://11.22.33.44/debug",
            "release": "https://11.22.33.44/release"
    ]

    supportLibrary = "28.0.0" // ${xxx}
    // 第三方库
    dependencies = [
            "appcompat" : "com.android.support:appcompat-v7:${supportLibrary}",
            "recyclerview" : "com.android.support:recyclerview-v7:${supportLibrary}",
            "constraint" : "com.android.support.constraint:constraint-layout:1.1.3"
    ]
}

在项目根目录的build.gradle下引入confg.gradle。

// 根目录下的build.gradle头部加入自定义config.gradle,相当于layout布局中加入include
apply from: "config.gradle"

在子模块或主模块的build.gradle文件中引用,以子模块为例

apply plugin: 'com.android.library'

// 赋值与引用
def androidId = rootProject.ext.androidId
def support = rootProject.ext.dependencies

android {
    compileSdkVersion androidId.compileSdkVersion
    buildToolsVersion androidId.buildToolsVersion


    defaultConfig {
        minSdkVersion androidId.minSdkVersion
        targetSdkVersion androidId.targetSdkVersion
        versionCode androidId.versionCode
        versionName androidId.versionName

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    // 依赖第三方库最简洁的方式:
    support.each { k, v -> implementation v }
}

参考Demo

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT小瓯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值