Android Studio 中的 gradle 详解
来源:互联网 发布:北京知到财务顾问 编辑:程序博客网 时间:2024/06/05 04:21
用过Android Studio(下面简称AS) 的人都知道,AS 使用的构建系统是 gradle。由于刚开始使用AS,对 gradle 这种构建方式不是太熟悉,所以在构建 android 项目,导入插件,引用开源项目时产生了很多错误,导致工程无法运行等一些问题。所以在网上搜罗了一些关于 gradle 的知识,总结了一下。
一.gradle 是什么?
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置,使的它更简洁,灵活而且gradle完全兼容maven和ivy。
二.gradle 在 AS 中的表现形式
AS 中的 Project 是一个工作空间,可以包含很多不同的 module,有些module是可以独立运行的,有些是公共库。 在AS 中project 会对应一个 build.gradle ,每个 modle
对应一个 build.gradle,这个 build.gradle 文件就是 gradle的配置文件。
这是一个android工程的project视图,上面那个是module下的build.gradle文件。下面那个是project下的build.gradle文件。这两个文件是有区别的,project下的build.gradle是基于整个project的配置,而module下的build.gradle是每个模块自己的配置。下面看下这两个build.gradle里面的内容:
project#build.gradle:
module#build.gradle:
defaultConfig中是一些基本配置,它会同时应用到debug/release版本上,下面列举了所有可配项及对应的值:
buildTypes结点很重要,这里可以配置构建的版本的一些参数,默认有两个构建版本release/debug,当然你可以自定义一个构建版本,比如叫foo,然后通过gradlew assembleFoo就可以生成对应的apk了。
buildTypes里还有很多可配置项,下面列举了所有可配项以及debug/release版本的默认值:
执行任务可以通过gradle/gradlew+任务名称的方式执,执行一个顶级任务会同时执行与其依赖的任务,比如你执行
它通常会执行:
列出所有可用的任务。在Android Studio中可以打开右侧gradle视图查看所有任务。
四.常见问题
1.导入本地jar包:
跟eclipse不太一样,android studio导入本地jar除了将jar包放到模块的libs目录中以外,还得在该模块的build.gradle中进行配置,配置方式是在dependencies结点下进行如下声明:
如果libs下有多个jar文件,可以这样声明:
2.导入maven库:
可见,格式为
3.导入某个project:
你的app是多模块的,假设有两个模块app和module-A,并且app模块是依赖module-A的,这时候我们就需要在app模块的build.gradle中的dependencies结点下配置依赖:
并且你需要在settings.gradle中把module-A模块包含进来:
此外,这种情况下module-A模块是作为库存在的,因而它的build.gradle中的插件声明通常应该是这样的:
而且,作为library的模块module-A的build.gradle文件的defaultConfig中是不允许声明applicationId的,这点需要注意。
4.声明三方maven仓库:
可能你项目需要的一些库文件是在你们公司的私服上,这时候repositories中仅有jcenter就不行了,你还需要把私服地址配到里面来,注意,应该配到project的build.gradle中的allprojects结点下或者直接配到某个模块中如果仅有这个模块用到。
配置方式:
5.依赖三方aar文件:
6.将库项目导出为aar:
首先你的项目必须是一个库项目,build.gradle中进行配置:然后你可以在命令行中进到项目目录,执行如下gradle任务:
生成的aar在/build/output/aar文件夹中
首先将aar文件放到模块的libs目录下,然后在该模块的build.gradle中声明flat仓库:
最后在dependencies结点下依赖该aar模块:
8.排除依赖:
当出现依赖冲突的时候可以通过排除依赖解决,具体方式如下:9.多dex支持(打包65k方法数限制)
首先在build.gradle的buildConfig中增加如下配置:
接着,在dependencies结点下增加如下依赖:
最后,让你的Application继承MultiDexApplication,如果你的应用没有声明Application,可以在manifest文件的application结点下增加name属性,值为android.support.multidex.MultiDexApplication。
详细内容参见官方文档。
10.自动移除不用资源
可以在buildTypes结点中增加如下配置:11.忽略lint错误:
可以在build.gradle文件中的android结点下增加如下配置:
12.声明编译的java版本
可以在build.gradle文件中的android结点下增加如下配置:
13.应用签名配置
首先在module的build.gradle中增加这些字段:
具体配置方式为:
首先在build.gradle的android结点下增加如下配置:
注:debug的默认签名为:
位置为
然后在buildTypes结点下的对应版本中添加上面的配置:
当然,release不是固定的名称,你可以随便取,比如这样:
真实开发中,把密码配置到build.gradle中不是很好的做法,最好的做法是放在gradle.properties中:
然后直接引用即可:
14.定制buildConfig:
在build.gradle中配置:
这样就会在BuildConfig类中生成type字段:
本文转载于Android开发中文站 » gradle入门
- Android Studio 中的 gradle 详解
- Android Studio 中的 gradle 详解
- Android Studio 中的 gradle 详解
- Gradle,Groovy与Android Studio中的Gradle详解
- ANDROID STUDIO Gradle详解
- Android中的Gradle详解
- Android Studio - 详解build.gradle
- Android studio gradle配置详解
- Android Studio--Gradle配置详解
- android studio gradle配置详解
- Android Studio gradle配置详解
- android studio gradle配置详解
- android studio gradle配置详解
- Android Studio gradle配置详解
- Android Studio gradle配置详解
- Android Studio Gradle配置详解
- Android Studio gradle配置详解
- 初识Android Studio中的Gradle
- javascript-闭包
- PAT a1047题解
- js中input标签内容改变的触发事件
- hdu 2030 汉字统计
- Qt防止本程序多次启动
- Android Studio 中的 gradle 详解
- C#多线程学习(一) 多线程的相关概念
- 链表的创建与输出
- 升级Win下工具链以支持C++17
- TextView、Button的drawableLeft和drawableRight与文本一起居中显示
- UITableView嵌套WKWebView的那些坑
- Promise-使用整理
- 排序算法(三) —— 插入排序
- 机器学习实战 笔记 debug kNN (三)