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 23buildToolsVersion "24.0.1"defaultConfig {applicationId "com.misakimei.project"minSdkVersion 19targetSdkVersion 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 23buildToolsVersion "24.0.1"defaultConfig {applicationId "com.misakimei.project"minSdkVersion 19targetSdkVersion 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的第三方开源库

gradle 配置详细说明相关推荐

  1. Android Studio里面的Build.gradle的详细配置

    Android Studio里面的Build.gradle的详细配置说明 apply plugin: 'com.android.application'//说明module的类型,com.androi ...

  2. Gradle的详细安装配置及使用教程

    Gradle的详细安装配置及使用教程 Gradle的安装 到Gradle官网,官网地址:https://gradle.org/releases/.下载对应的版本,本文安装的是 4.3.1 版本. 下载 ...

  3. gradle安装配置详细教程(windows环境)

    先清理本地的gradle文件,不要在未安装gradle的情况下使用idea构建gradle项目 1.官网下载链接:https://gradle.org/releases/ 根据自己的项目,选择合适版本 ...

  4. gradle配置_Gradle配置

    gradle配置 在这篇文章中,我们将介绍有关Gradle配置的综合文章. 1.技术 Gradle是用于自动任务管理的开源构建工具. 它基于Apache Ant,Apache Maven的概念. Gr ...

  5. 安卓逆向_13 --- AndroidStudio + Smalidea 动态调试 smali 代码【APK可调试】、gradle 配置

    教我兄弟学Android逆向04 动态调试smali代码:https://www.52pojie.cn/thread-658865-1-1.html From:Android Studio 3.6 调 ...

  6. build.gradle配置

    文章目录 1 build.gradle配置 1.1 project下的build.gradle 1.2 module下的build.gradle 2 Apk版本号的命名规则及配置方法 2.1 命名规则 ...

  7. Android开发之深入理解Android Studio构建文件build.gradle配置

    通过这篇文章的学习,你会对build.gradle文件有一个全新的认识,可以将TeachCourse文章提到的相关说明作为文档参考,方便在另一个module中引入,代码如下: apply plugin ...

  8. 【Gradle-2】一文搞懂Gradle配置

    1.前言 "Gradle的配置太多了,经常版本更新还有变化,而且它还能扩展,记是记不住了,只能用到再搜了,哎,难顶" 真的难顶,但是我想挑战一下- 本文介绍的重点: Gradle配 ...

  9. Android Studio里面的Build.gradle的详细配置说明

    Android Studio里面的Build.gradle的详细配置说明 [java] view plain copy print ? apply plugin: 'com.android.appli ...

最新文章

  1. python——图像处理3(均值偏移、改变亮度、图像修复、图像融合)
  2. HyperLedger Fabric区块链技术形成(1.2)
  3. Java DES 加解密(DES/CBC/PKCS5Padding)
  4. php csrf攻击 xss区别,XSS与CSRF攻击及防御方法
  5. matlab预测ARMA-GARCH 条件均值和方差模型
  6. mysql取固定前缀的表_mysql删除指定前缀的表
  7. php操作mysql工具类_PHP操作数据库的工具类
  8. 人工智能之启发式搜索算法
  9. ZZULIOJ:1044: 不及格率
  10. 如意云路由刷PandoraBox
  11. 关于校园流浪猫狗的调查报告 新生研讨课校内调查
  12. 快看,这是我为你准备的Python爬取图片教程
  13. c语言哑铃,使用一副哑铃,做好8个动作,就能练遍全身肌肉
  14. 模电——三极管各个引脚之间的电压关系
  15. 【MATLAB教程案例16】基于GWO灰狼优化算法的函数极值计算matlab仿真及其他应用
  16. 视频合并软件怎么把多个视频合并为一个视频
  17. 2022-2028年中国LCD(液晶显示器)行业市场发展现状及投资策略研究报告
  18. mysql 2.71828_2.7182818是什么意思?
  19. Android中通过来电转移实现“电话已关机”,“此号码已停机”等
  20. SzNOI语法百题之1-10

热门文章

  1. MySQL进阶part2
  2. 获取wifi当前手机连接的wifi信息以及信号强度
  3. 魔兽世界为什么无法向该服务器发送邮件,公会转移FAQ
  4. jenkins Extended Choice Parameter 使用groovy显示数据
  5. 美团饿了么外卖CPS红包对比
  6. 360°平滑游戏摇杆(触屏方向导航)
  7. 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验02 分支与循环程序设计(2021级)(4)
  8. Git相关:Gitee的PR显示权限形同虚设?
  9. 绝对式编码器工作原理是什么?如何安装绝对式编码器?
  10. 在线扫描网站/网址开放的端口