1.Gradle是什么
Gradle使用groovy语法,功能和maven、ant一样是一个强大的构建工具。
2.Gradle生命周期
<1> initialization:初始化阶段
执行工程的adle文件。 解析整个工程下的所有Project,构建所有的Project对应的project对象。
<2> Configuration:配置阶段
解析所有project对象中的task,构建好所有的task拓扑图(有向无环图)。
这个有向无环图其实就是各个执行一个Task所依赖的其他Task而形成的一种关系图。
<3> Excution:执行阶段
执行具体的task,及其依赖的task(先执行目标Task依赖的Task,再执行目标Task)。
一个简单的项目的结构截图
由截图可知,一个简单的项目有三个.gradle文件。APP的gradle文件,项目的gradle文件,设置gradle文件。后续我们会一一讲解。
Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的。
1.APP的gradle文件
apply plugin: 'com.android.application'android {compileSdkVersion 28defaultConfig {applicationId "com.wjn.okhttpmvpdemo"minSdkVersion 19targetSdkVersion 27versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('), 'proguard-rules.pro'}}}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:appcompat-v7:28.0.0'implementation 'com.straint:constraint-layout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'com.st:runner:1.0.2'androidTestImplementation 'com.st.espresso:espresso-core:3.0.2'implementation activex:rxjava:1.3.2'implementation activex:rxandroid:1.2.1'implementation 'com.squareup.okhttp3:okhttp:3.9.0'implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'implementation adystatesoftware.systembartint:systembartint:1.0.3'implementation 'fit2:retrofit:2.7.0'implementation 'com.github.bumptech.glide:glide:4.4.0'}
说明:APP的gradle文件可以分成3部分。
<1> apply plugin:声明是Android项目是 应用程序模块 还是 库模块。
apply plugin: 'com.android.application'
com.android.application:表示该模块为应用程序模块,可以直接运行,打包得到的是.apk文件。com.android.library:表示该模块为库模块,只能作为代码库依附于别的应用程序模块来运行,打包得到的是.aar文件。
<2> android{}闭包:配置项目构建的各种属性。
1pileSdkVersion:设置编译时用的Android版本。2.defaultConfig{}闭包中各个属性2.1.applicationId:指定了项目的包名。2.2.minSdkVersion:指定项目最低兼容的版本,如果设备小于这个版本将无法安装这个应用。2.3.targetSdkVersion:指定项目的目标版本,表示在该目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统的最新功能特性。Android系统平台的行为变更,只有targetSdkVersion的属性值被设置为大于或等于该系统平台的API版本时,才会生效。2.4.versionCode:表示版本号。一般每次打包上线时该值只能增加,增加数值随意。2.5.versionName:表示版本名称。展示在应用市场上。stInstrumentationRunner "st.runner.AndroidJUnitRunner"表明要使用AndroidJUnitRunner进行单元测试。3.buildTypes{}闭包中的各个属性这个闭包主要指定项目生成APK的主要配置,一般包含两个子闭包。一个是debug闭包,用于指定生成测试版安装文件的配置,可以忽略不写。一个是release闭包,用于指定生成正式版安装文件的配置。两者能配置的参数相同,最大的区别默认属性配置不一样。3.1.minifyEnabled:表明是否对代码进行混淆,true表示对代码进行混淆,false表示对代码不进行混淆,默认的是false。3.2.proguardFiles:指定混淆的规则文件,这里指定了文件和proguard-rules.pro文件两个文件文件为默认的混淆文件,里面定义了一些通用的混淆规则。proguard-rules.pro文件位于当前项目的根目录下,可以在该文件中定义一些项目特有的混淆规则。
注意:android{}闭包中还可以包含很多属性。下一章节讲解。
<3> dependencies{}闭包:该闭包定义了项目的依赖关系。
该闭包定义了项目的依赖关系,一般项目都有三种依赖方式:本地依赖、库依赖 远程依赖。1.本地本地二进制文件(jar包和aar包)依赖 举例1.1.implementation fileTree(dir: 'libs', include: ['*.jar'])Gradle 声明了对项目的 module_name/libs/ 目录中 JAR 文件的依赖关系(因为 Gradle 会读取 adle 文件的相对路径依赖项目中指定的jar包 即只需要把要加载的jar包放到指定位置 不需要额外再配置当然 您也可以按如下方式指定各个文件
implementation files('libs/XXX.jar')1.2.implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
在上述的基础上增加了aar包 其他含义和上述一样。2.本地库模块依赖
implementation project(':XXXName')这声明了对一个名为“XXXName”(此名称必须与在您的 adle 文件中使用 include: 定义的库名称相符)的 Android 库模块的依赖关系。在构建您的应用时,构建系统会编译该库模块,并将生成的编译内容打包到 APK 中。3.远程依赖举例
implementation 'com.squareup.okhttp3:okhttp:3.9.0'
implementation 'fit2:retrofit:2.7.0'
implementation 'com.github.bumptech.glide:glide:4.4.0'注意:
从Android Studio3.0后compile引入库不在使用,而是通过api和implementation。api完全等同于以前的compile。用api引入的库整个项目都可以使用。用implementation引入的库只有对应的Module能使用,其他Module不能使用。使用implementation之后做到降低偶合兴提高安全性。
2.项目的gradle文件
buildscript {repositories {google()jcenter()}dependencies {classpath 'ls.build:gradle:3.3.2'}
}allprojects {repositories {google()jcenter()}
}task clean(type: Delete) {delete rootProject.buildDir
}
说明:项目的gradle文件可以分成3部分。
<1> buildscript{}闭包:gradle脚本执行所需依赖。
buildscript{}闭包一般包含两个闭包1.repositories{}闭包:配置远程仓库<1> jcenter()是一个代码托管仓库,上面托管了很多Android开源项目。<2> google()是谷歌的仓库,可以使用谷歌的项目。<3> maven { url 'XXX/XXX' }配置自己的maven仓库。2.dependencies{}闭包:配置android的插件,比如gradle插件classpath 'ls.build:gradle:3.3.2'
<2> allprojects{}闭包:项目本身需要的依赖。
<1> jcenter()是一个代码托管仓库,上面托管了很多Android开源项目。<2> google()是谷歌的仓库,可以使用谷歌的项目。<3> maven { url 'XXX/XXX' }配置自己的maven仓库。
<3> task clean(type: Delete){}闭包
是运行gradle clean时,执行此处定义的task任务,该任务继承自Delete,删除根目录中的build目录。其中buildscript包含repositories闭包和dependencies闭包。一般不需要配置修改。
3.设置的gradle文件
include ':app'
此gradle文件,主要用来引入本地的库文件项目。比如include ':AAAName', ':BBBName'
本文发布于:2024-01-30 04:18:04,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170655948619157.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |