gradle 配置详细说明

本文深入探讨Gradle作为Android开发中项目自动化构建工具的角色,解析其与Apache Ant及Maven的关系,详解Gradle在Android Studio中的集成,以及如何通过Gradle配置文件构建和管理Android项目。

gradle

Gradle
依赖:Apache Ant ,Apache Maven ,项目自动化建构工具 ,Groovy, 特定领域语言(DSL),

Gradle =>一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)

Apache Ant => 由Apache 提供的自动化软件构建工具 (可以理解为其负责软件的编译) 开始于2000年左右。

Apache Maven => 是由Apache 提供的管理项目的构建,报告和文档的软件项目管理工具 (我将其理解为 通过pom.xml来描述软件依赖关系。并提供一个云端类库) 开始于2001年左右。

项目自动化建构工具 => 抽象项目编译过程 提供一个容易使用的接口的工具

Groovy => 一门编程语言,基于JVM 的面对对象的动态脚本语言

特定领域语言=>为了解决某个特定领域的问题 而编写的语言,一般基于其他语言

Android Studio =>2013年谷歌推出的Android开发环境 使用Gradle 作为编译工具

其中过程依赖:grdle基本知识,编译过程,

Android Studio 使用Gradle做为Android apk的编译工具。
在android studio执行run时,实际上底层调用的是gradle 命令,由gradle再去使用Android SDK中的编译工具。
这主要是因为直接使用sdk的编译工具太麻烦太痛苦,而gradle提供了一个很好的接口,让我们能通过命令行来编译android。
apk grdle基本知识:gradle通过解析build.gradle这个文件来运行build.gradle。gradle配置主要由task和一些配置组成,task之间有相互依赖关系。通过这些依赖关系和配置就能编译项目可以通过 apply plugin 来加入一些默认的task。例如apply plugin: ‘java’,这是java的插件。他加入了许多编译java的task,如果你的目录结构正确,那么通过gradle 运行 task 就能编译java项目。
编译过程,这是一个最简单的显示 hellowrold的 apk的文件结构。

一个android项目实际上在gradle 的编译体系中属于 multi project build。
每个使用gradle编译的android项目都有一个app文件夹,android项目源码就在这个文件夹下。gradle文件中放的是一个jar包

当你的电脑中没有安装gradle,就会通过gradle-wrapper.jar来下载gradle,从而继续编译。build.gradle中的是

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.3'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

他只是通过

dependencies {
        classpath 'com.android.tools.build:gradle:2.1.3'
    }

来描述插件的位置。
gradle.properties 中是配置信息,在这里设置jvm的heapsize 什么的。
settings.gradle之前说了每个用gradle 的android 项目是一个multi project build,那么就需要指明有哪些project,这里我们就只有默认的app。

local.properties中配置的是sdk的位置

gradlew.bat 和gradlew 分别是在windows 和linux下的执行gradle 命令的程序。
例如在windows下要编译apk,就执行 .\gradlew assemble

进入到app文件夹

libs文件夹下放项目要用的jar包src下就是正常的android 项目的源码了,build.gradle中是

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.1"

    defaultConfig {
        applicationId "com.misakimei.project"
        minSdkVersion 19
        targetSdkVersion 23
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.4.0'
    testCompile 'junit:junit:4.12'

}
apply plugin: 'com.android.application'

使用从之前设定的

dependencies {
        classpath 'com.android.tools.build:gradle:2.1.3'
}

得到的plugin,这个plugin导入了许多编译android apk 要用的task。
接着是两个配置项 android 和dependencies。
android中配置的是源码的,编译中的一些设置。例如:sdkversion什么的,详细的在这里。
dependencies中配置的是这个项目中要用的类库。compile fileTree(dir: 'libs', include: ['*.jar'])表示包括之前在libs文件夹下的所有jar包。compile 'com.android.support:appcompat-v7:23.4.0'这种表示增加appcompat-v7:23.4.0的依赖,gradle会自动下载配置。
例如如果要用guava 的话直接加一行compile group: 'com.google.guava', name: 'guava', version: '11.0.2' 就好。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.1"

    defaultConfig {
        applicationId "com.misakimei.project"
        minSdkVersion 19
        targetSdkVersion 23
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile group: 'com.google.guava', name: 'guava', version: '11.0.2'
    testCompile 'junit:junit:4.12'

}

dependencies 的详细配置在 这里gradle +特定的插件,使得编译时只要在意配置,无须再手敲 aapt javac gcc 什么的。

gradle配置详细说明

apply plugin: 'com.android.application'//说明module的类型,com.android.application为程序,com.android.library为库
android {
    compileSdkVersion 22//编译的SDK版本
    buildToolsVersion "22.0.1"//编译的Tools版本
    defaultConfig {//默认配置
        applicationId "com.nd.famlink"//应用程序的包名
        minSdkVersion 8//支持的最低版本
        targetSdkVersion 19//支持的目标版本
        versionCode 52//版本号
        versionName "3.0.1"//版本名
		manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"hsq" ]//声明友盟渠道名是可变的
    }
    sourceSets {//目录指向配置
        main {
            manifest.srcFile 'AndroidManifest.xml'//指定AndroidManifest文件
            java.srcDirs = ['src']//指定source目录
            resources.srcDirs = ['src']//指定source目录
            aidl.srcDirs = ['src']//指定source目录
            renderscript.srcDirs = ['src']//指定source目录
            res.srcDirs = ['res']//指定资源目录
            assets.srcDirs = ['assets']//指定assets目录
            jniLibs.srcDirs = ['libs']//指定lib库目录
        }
        debug.setRoot('build-types/debug')//指定debug模式的路径
        release.setRoot('build-types/release')//指定release模式的路径
    }
    signingConfigs {//签名配置
        release {//发布版签名配置
            storeFile file("fk.keystore")//密钥文件路径
            storePassword "123"//密钥文件密码
            keyAlias "fk"//key别名
            keyPassword "123"//key密码
        }
        debug {//debug版签名配置
            storeFile file("fk.keystore")
            storePassword "123"
            keyAlias "fk"
            keyPassword "123"
        }
    }
    buildTypes {//build类型
        release {//发布
            minifyEnabled true//混淆开启
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'//指定混淆规则文件
            signingConfig signingConfigs.release//设置签名信息
        }
        debug {//调试
            signingConfig signingConfigs.release
        }
    }
    packagingOptions {
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/MANIFEST.MF'
    }
 
    lintOptions {
        abortOnError false//lint时候终止错误上报,防止编译的时候莫名的失败
    }
	
	//打包-渠道
    productFlavors {
        hsq{}
        hsq_dx{}
        hsq_wx{}
        baidu{}
        yingyongbao{}
        ppzhushou{}
        anzhi{}
        zhushou360{}
        huawei{}
        lenovomm{}
        wandoujia{}
        mumayi{}
        meizu{}
        youyi{}
        sougou{}
    }
	
	//打包-防渠道代码重复处理
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]
    }
}
 
dependencies {//依赖
    compile fileTree(dir: 'libs', exclude: ['android-support*.jar'], include: ['*.jar'])   //编译lib目录下的.jar文件
    compile project(':Easylink')//编译附加的项目
    compile project(':ImageLibrary')
    compile project(':ImageResLibrary')
    compile project(':Ofdmtransport')
    compile project(':PullToRefreshLibrary')
    compile project(':RecorderLibrary')
    compile project(':WebSocket')
    compile project(':WidgetLibrary')
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'//编译来自Jcenter的第三方开源库

<think> 根据用户的问题和系统级指令,用户希望获取Gradle配置的相关信息。结合用户提供的站内引用,我需要整理关于Gradle配置的方法和相关信息。 回顾引用内容: - 引用[1]提到Gradle配置的优先级、初始配置、常用配置以及Gradle 7.0前后的差异,还有Android核心配置的源码分析。 - 引用[2]强调Gradle与Maven的依赖管理差异。 - 引用[3]说明Android Studio中手动安装Gradle的方法,特别是通过修改distributionUrl来指定项目使用的Gradle版本。 - 引用[4]详细描述了手动下载Gradle配置环境变量以及指定依赖存储路径的方法。 用户需求:获取Gradle配置方法和相关信息。 回答结构: 1. Gradle配置基础:介绍配置文件位置和优先级。 2. 常用配置项:包括仓库、依赖、插件等。 3. 版本配置:如何指定Gradle版本(wrapper vs 手动安装)。 4. 环境变量配置:全局设置。 5. 依赖存储路径:修改默认缓存位置。 6. 配置示例:提供代码片段。 注意事项: - 使用中文回答。 - 行内数学表达式用$...$(但本问题可能不涉及数学公式,可不使用)。 - 独立公式用$$...$$(本问题可能不需要)。 - 生成相关问题。 - 引用的末尾添加引用标识[^n]。 由于引用内容较多,需整合信息,避免直接复制。 </think> ### Gradle配置方法与相关信息 根据站内引用内容,以下是Gradle配置的核心方法和关键信息: #### 1. **配置优先级与基础概念** - Gradle配置优先级:项目配置 > 用户主目录配置 > 全局配置[^1]。 - Gradle 7.0+ 对配置语法进行了优化(如依赖声明方式变更),需注意版本兼容性[^1]。 #### 2. **版本配置方法** - **Wrapper方式(推荐)** 修改项目目录下的 `gradle-wrapper.properties` 文件: ```properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.2-bin.zip ``` 此配置决定项目使用的Gradle版本,不同项目可独立指定版本[^3]。 - **手动安装方式** 步骤: 1. 从[Gradle官网](https://services.gradle.org/distributions/)下载所需版本(如7.3.2)[^4] 2. 解压文件并配置全局环境变量: ``` GRADLE_HOME = D:\software\gradle-7.3.2 PATH = %GRADLE_HOME%\bin ``` 3. 验证安装:终端执行 `gradle -v` 显示版本信息即成功[^4] #### 3. **依赖存储路径配置** - 默认路径:`$USER_HOME/.gradle/caches/modules-2` - 自定义路径(避免C盘占用): ```properties # 在gradle.properties中指定 gradle.user.home = D:\software\gradle-repository ``` 此配置会覆盖默认依赖缓存位置[^4]。 #### 4. **核心配置项** - **仓库配置**:在 `build.gradle` 中声明仓库源 ```groovy repositories { mavenCentral() // Maven中央仓库 google() // Android专用仓库 } ``` - **依赖管理**:Gradle使用声明式依赖(优于Maven的XML配置)[^2] ```groovy dependencies { implementation 'com.android.tools.build:gradle:7.3.1' testImplementation 'junit:junit:4.13.2' } ``` #### 5. **Android项目特殊配置** - Android Studio通过 `settings.gradle` 加载插件: ```groovy pluginManagement { repositories { google() // 必须声明google仓库 } } ``` - 构建变体配置(如debug/release)在 `build.gradle` 的 `android{}` 块中定义[^1]。 > **注意**:若同时存在Wrapper配置和环境变量配置,**Wrapper优先级更高**(引用[4]中手动配置需删除`gradle-wrapper.properties`文件才生效)[^3][^4]。 --- ### 相关问题 1. Gradle 7.0+ 与旧版本的主要配置差异有哪些?[^1] 2. 如何解决Gradle依赖下载缓慢或失败的问题?[^2][^4] 3. 在多模块项目中如何统一管理Gradle依赖版本? 4. Gradle的增量编译机制如何提升构建效率?[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值