gradle学习记录
来源:互联网 发布:经典名著改编电影知乎 编辑:程序博客网 时间:2024/05/29 17:16
一、概念
什么是gradle
1、独立项目,和Google无关
2、Grdle基于Groovy。(Maven、Ant基于xml)
3、Gradle兼容Maven、Ant
4、Gradle 的推出主要以 Java 应用为主,当然还支持 Android、C、C++等。
二、命令
如下是使用gradle中使用的几个命令,如果是本地使用可以使用的到,如果是在AS上就由AS来自动使用
- assemble:对所有的 buildType 生成 apk 包。
- clean:移除所有的编译输出文件,比如apk
- check:执行
lint
检测编译。 - build:同时执行
assemble
和check
命令
三、目录
下面看一下在AS中的目录结构
1、第一个是gradle文件夹,其中包含一个gradle-wrapper.jar和一个gradle-wrapper.properties,其中jar是做低版本兼容用的,properties文件中有该gradle的版本号
2、下面来看一个工程下的build.gradle
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' }}allprojects { repositories { jcenter() }}内容主要包含了两个方面:一个是声明仓库的源,这里可以看到是指明的jcenter(), 之前版本则是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了android gradle plugin的版本,android studio 1.0正式版必须要求支持gradle plugin 1.0的版本。
3、下面来看一个Moudle下的build.gradle
// com.android.application 说明了这是一个项目// 如果是作为库的module 是 apply plugin: 'com.android.library'apply plugin: 'com.android.application'// android 相关 构建参数android { compileSdkVersion 23 // 编译使用SDK版本 buildToolsVersion "23.0.3" // 编译工具的版本 buildTools defaultConfig { applicationId "com.am.gradletest" // 用于标识的包名 minSdkVersion 14 // sdk最低支持版本 targetSdkVersion 23 // 目标SDK版本,如果目标设备的API版本正好等于此数值,就不会为此程序开启兼容性检查判断的工作 versionCode 1 //版本号 versionName "1.0" } // 编译类型 // 下面 声明了 debug 和 release 两种类型,名字随意 buildTypes { // release 发布 ,release里面是关于发布的配置 release { minifyEnabled false // minifyEnabled 是否开启混淆,false不开启 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 混淆文件 } // debug(不作为发布版)时候的配置,这个debug的代码块默认不带,这里是手动加的 debug{ } }}// 依赖 三种依赖,第一种是本地的jar,第二种是本地的module库,第三种是利用gradle远程的依赖管理dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // 这句代码会自动依赖本地的所有jar,就不要逐个依赖了 testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0'}文件开头apply plugin是最新gradle版本的写法。buildToolsVersion这个需要你本地安装该版本才行,很多人导入新的第三方库,失败的原因之一是build version的版本不对,这个可以手动更改成你本地已有的版本或者打开 SDK Manager 去下载对应版本。applicationId代表应用的包名,也是最新的写法,这里就不在多说了。
4、local.properties
Android studio 自动生成,用于配置本地的 SDK、NDK 路径。
因为这是针对设备的设置,不同的设备SDK路径不一定一样。
因为这是针对设备的设置,不同的设备SDK路径不一定一样。
5、setting.gradle
这个是用来配置模块的,程序最开始的时候要先执行到这里,看看有哪几个模块,然后分别进行编译
就是在初始化时,读取setting.gradle中的项目配置,来确定编译的工程,通过每个工程中的build.gradle来确定编译的任务,而这些任务是由对应的plugin来决定的,比如 'com.android.application'插件决定编译成apk,而'com.android.library'插件决定项目编译成.aar库文件等。
四、原理
Gradle中,每一个待编译的工程都叫一个Project。每一个Project在构建的时候都包含一系列的Task。比如一个Android APK的编译可能包含:Java源码编译Task、资源编译Task、JNI编译Task、lint检查Task、打包生成APK的Task、签名Task等。一个具体的编译过程是由一个一个的Task来定义和执行的。
Gradle的生命周期
1. Initialization -初始化阶段
2. Configuration -配置阶段
3. Execution -执行阶段
如下是构建过程
1. 编译器将您的源代码转换成 DEX(Dalvik Executable)文件(其中包括运行在Android设备上的字节码),将所有其他内容转换成已编译资源。
2. APK 打包器将 DEX文件和已编译资源合并成单个APK。不过,必须先签署APK,才能将应用安装并部署到Android设备上。
3. APK 打包器使用调试或发布密钥库签署您的APK
尊重作者,尊重原创,参考文章:
http://blog.csdn.net/a_ycmbc/article/details/53924734
https://segmentfault.com/a/1190000002439306
http://www.jianshu.com/p/01281d1c3384
http://www.jianshu.com/p/9df3c3b6067a
阅读全文
1 0
- gradle学习记录
- Gradle学习记录
- 记录Gradle学习
- gradle学习记录
- Gradle学习记录
- Gradle学习记录
- gradle 学习记录
- 关于gradle的学习记录
- gradle 学习记录1--mac
- Android Gradle学习记录4 Gradle概念及工作流程
- Android Gradle学习记录5 Gradle补充说明
- Android Gradle学习记录4 Gradle概念及工作流程
- Android Gradle学习记录1 基本特点
- Gradle记录
- Android Gradle学习记录6 代码记录(持续补充)
- gradle的学习与实践记录(一)
- gradle的学习与实践记录(二)
- Android Gradle学习记录2 类及脚本的特点
- SSM小Demo
- python object does not support item assignment
- InputStream类、OutputStream类、BufferedInputStream类与BufferedOutputStream类--Java基础084
- Java compiler level does not match the version of the installed Java project facet错误的解决
- J
- gradle学习记录
- C语言中指针初始化和常规运算
- MP4文件格式解析
- python学习之路
- hashmap原理详解
- 机器学习线性回归实现
- 5.28-5.30 JLL--实习日志--js.mask()和bootstrapValidator()验证函数
- Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法
- at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:123)