《Gradle for Android》核心总结(一)Gradle文件

栏目: Android · 发布时间: 4年前

内容简介:文件则在Android的app模块内被创建。对于一个只包含一个Android应用的新项目来说,
《Gradle for Android》核心总结(一)Gradle文件
如上图,当我们使用 Android Studio创建一个新项目时,会默认生成三个Gradle文件。其中的两个文件为 settings.gradlebuild.gradle 位于项目的根目录。另外一个 build.gradle

文件则在Android的app模块内被创建。

settings.gradle

对于一个只包含一个Android应用的新项目来说, settings.gradle 的内容如下,表示app模块应该包含在构建内:

include':app'

settings.gradle 文件在初始化阶段被执行,并且定义了哪些模块应该包含在构建内。

注意:单模块项目并不一定需要setting文件,但是多模块项目必须要有setting文件,否则,Gradle不知道哪个模块应包含在构建内。

根目录下的build.gradle

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

allprojects {
    repositories {
        google()
        jcenter()
    }
}
复制代码
  • buildscript:在里面进行具体的构造配置
  • repositories:指定代码仓库,设置依赖时,从该代码仓库下载
  • dependencies:配置构建过程的依赖包。默认情况下,唯一被定义的依赖包是 GradleAndroid 插件。每个 Android 模块都需要有 Android 插件,因为该插件中定义了执行 Android 的相关任务。
  • allprojects:声明应用到所有模块的属性,如果模块中的 build.gradle 的设置与根目录下的 build.gradle 文件中的 allprojects 设置冲突,则模块中的设置覆盖根目录下的设置。

模块下的build.gradle

下面是app模块下的 build.gradle 的代码:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
复制代码

插件

第一行 apply plugin: 'com.android.application' 表示应用 Android 插件,该插件在顶层构建文件中被配置成了依赖

dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
    }
复制代码

android

android 代码块包含了全部的 Android 特有配置,这些特有配置之所以可被使用,是因为之前我们使用了 Android 插件。配置如下:

compileSdkVersion

compileSdkVersion 是要用来声明编译应用的Android API版本。

defaultConfig

defaultConfig 代码块用于配置应用的核心属性。此代码块中的属性可覆盖 Android.Manifest.xml 文件中对应的条目

  • applicationId:该属性覆盖了manifest文件中的 packagename

applicationIdpackagename 的区别:在应用构建之前, AndroidManifest.xml 中的 package name 有两个用途:1.作为一个应用的唯标符,2.在R 资源类中被用作包名。在构建后定义在 manifest 文件中的 package ,继续用在你的源代码和 R 类中,而之前被用作设备唯一标识的 package name , 现在则被称之为 applicationId

  • minSdkVersion : 用来配置运行应用的最小 APl 级别
  • targetSdkVersion : 用于通知系统, 该应用已经在某特定 Android 版本通过测试, 从而操作系统不必启用任何向前兼容 的行为。 这和我们之前看到的 compileSdkVersion 没有任何关系。
  • versionCode : 定义版本号
  • versionName : 定义版本号名称

如果你在 build.gradle 中定义了它们, 就没有必要在 manifest 文件中再去定义。 如果构建 文件不包含某个属性, 那么 manifest 中的该属性就会被用作后备。

buildTypes

buildTypes 代码块可用来定义如何构建和打包不同构建类型的应用

dependencies

依赖代码块是标准 Gradle 配置的部分(这就是其放在 android 代码块之外的原因), 其定义了个应用或依赖项目的所有依赖包。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

无界

无界

(美)艾米莉·内格尔·格林(Emily Nagle Green) / 卞斌 / 机械工业出版社 / 2011-5 / 39.00元

"数十亿人身在其中、数十万亿美元的新生意,你我此生最大的科技革命,这次转型将如何改变我们的生活? 又如何使我们做生意的方式起革命性的变化? 无界会比你所想更快降临,将创造数兆美元的新价值。你的行动够快吗?这本放眼未来的著作,结合专家的洞见、战术性工具,以及扬基集团独有的无界趋势数据,提供你需要的一切。" 未来的世界和企业,会走向无界的状态,也就是人、构想和产品经由一张全球性的数字......一起来看看 《无界》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具