欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android Studio 构建脚本-gradle详解

程序员文章站 2024-01-11 20:32:58
...

**Android Studio 构建系统Gadle详解

  1. Gradle基本概念
  2. Android Studio中gradle与工程结构
  3. 模块中build.gradle标签介绍与详细写法

首先贴一下Android Studio Gradle plugin的官方链接 喜欢看官方文档的可以进去看看

https://developer.android.google.cn/studio/releases/gradle-plugin.html#updating-gradle

1:Gradle基本概念

——Android Studio中的gradle分为两部分

  • 1.Gradle构建工具
  • 2.Android Studio中的构建插件—gradle

  • Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。
    面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。
    官网Gradle构建工具官网

  • Android Studio的构建系统正是基于gradle,并且谷歌在gradle插件中添加了一些适用于Android的特性,虽然Android插件通常是跟AndroidStudio同步更新的,但同时它也可以独立运行和进行升级

在AndroidStudio中 gradle插件与gradle构建工具的版本必须一一对应,如果不对应编译时会报错,无法成功通过编译
gradle插件与gradle构建版本对应版本如下图(最新插件版本3.0.1,对应最新gradle版本4.1 写于2017-12-22)
最新版本可从这里进入查看(需要*)
Android Studio 构建脚本-gradle详解


——查看已安装的gradle插件与Gradle工具版本

File -> Project Structure (快捷键 Ctrl+Shift+Alt+s ) 打开Project Structure
左侧选中Project即可看到自己工具的gradle版本与gradle插件版本
- 如图 我的gradle版本为4.1 插件版本为3.0.1
Android Studio 构建脚本-gradle详解



2.Android Studio中gradle与工程结构

——工程结构

1.谷歌官方文档中关于工程结构的结构图

Android Studio 构建脚本-gradle详解

2 创建的新工程的结构图

Android Studio 构建脚本-gradle详解

可能很多人刚开始接触studio时,对于BuildScript下面的两个build.gradle文件不太明白,一模一样的文件名放在同一个目录下给人一种混乱的感觉(至少我当时是这么头疼的)

  • 1、 在一个工程中可以有多个build.gradle配置文件

  • 2、 工程根目录存在一个build.gradle配置,用于对整个工程的配置(仓库,插件)

  • 3、每个模块(module)内有一个build.gradle文件,对应该模块纬度的相关编译配置(模块类型、构建方式、用于编译的SDK版本、该模块所依赖的库等等)

所以: 一个工程中 build.gradle文件个数 = module个数 + 1



3: 模块中build.gradle属性介绍与详细写法

创建新项目时Android Studio会自动给工程添加所必须的配置

  • 根目录下的build.gradle
  • 模块内的build.gradle

此处主要讲的是模块内gradle脚本一些常用的属性配置

创建新工程时,我们看到工程内会自动生成一个build.gradle文件如下

apply plugin: 'com.android.application'

android {

    compileSdkVersion 26

    defaultConfig {
        applicationId "com.lee.gradledemo"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets{
        main{
            jniLibs.srcDirs = ["libs","armeabi"]
            jniLibs.srcDir("libs")
        }
    }
}


allprojects {
    repositories {
        google()
        jcenter()
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

其中包括了构建一个Android工程所需的几个配置

  1. 写在根部的属性
    • apply plugin: 使用的插件
    • android{} Android相关属性配置
    • dependencies{} 依赖库声明
  2. android{}
    • compileSdkVersion 编译的SDK版本 buildToolsVersion 构建工具版本
    • defaultConfig{},buildTyps{},productFlavors{},flavorDimensions(),sourceSets{},signingConfigs{}
    • 2.3
  3. dependencies
    • 3.1
    • 3.2
    • 3.3