Gradle在Android中的简单使用
Gradle在Android中简单的使用
还望支持个人博客站:http://www.enjoytoday.cn
Android Studio 使用gradle进行工程构建,为了更好的了解整个android开发过程(开发,调试,发布),就需要对gradle有一个初步的了解,至少需要知道他的每一个配置所代表的意思,更深层次的了解就要看个人兴趣了。
- Gradle简述
- android工程中的gradle
- 常见的gradle配置
- Gradle学习参考
Gradle简述
其实有关gradle的介绍网上有很多的相关资料了,简单来说它就是一个构建java工程的工具,帮助我们管理编译java工程。高大上点就是他们自己在GitHub上说的那样,是个很牛逼的面对jvm的编译系统(A powerful build system for the JVM.)。gradle的特点有很多,比较重要需要了解的有如下三个特点(不全面,只是概括):
- 1)是一个构建整合工具
- 就是可以直接与其他构建系统进行切换
- 2)支持多工程构建
- 这也是他的特色,我们在Android Studio中可以很明显的看看到在新建选项中有两个很不一样的新建方式,一种是New Project,这种方式会帮你真的建立一种gradle工程,而新建的gradle工程中会在工程一级目录下默认创建一个app的文件夹子(即我们配置的android项目),而New Module则是基于一个已有的gradle的工程下创建一个android 工程,同样也是默认在工程的一级目录下创建,同时我们的Project下的settings.gradle中会添加一个include工程。
include 'app' , 'source';
如上,settings.gradle就 是多工程配置文件,通过include 来引入子工程,默认子工程位置是在当前Project的主目录下,若不再默认位置,需要在settings.gradle中指定子工程文件位置,如:
include 'app'
project(':app').projectDir = new File('../app')
- 3)gradle是采用groovy脚本语言实现配置的而非xml
- groovy是一种基于jvm的脚本语言,面向对象,可以很好的帮助我们维护构建项目,最直观的例子,多版本发布可以直接通过简短的几句脚本配置语句完成。
Android工程中的gradle
1、Project 中的gradle
- gradlew
linux或者mac的编译脚本,可以通过./gradlew build编译当前project
- gradlew.bat
windows下的编译脚本
- gradle.properties
gradle的属性配置文件,一般情况不需要我们配置什么信息,保持默认即可
- build.gradle
gradle的编译脚本,每个工程子工程中都会存在,是编译配置的主要文件
- settings.gradle
多项目导入的配置文件,可以在这儿将你的所有的子过程导入
2、Module中的gradle
- build.gradle
module中只需要一个build.gradle即可,用于配置工程的结构,依赖管理,签名信息,sdk编译版本,包名信息,发布渠道或版本控制等。
常见的gradle配置
介绍build.gradle中一些常见配置信息的含义和使用简单的一些配置帮助我们完成一些预期的效果。
buildscript {
repositories {
//依赖支持jcenter仓库获取
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
//当前的project的所有子模块,即settings.gradle中所有项目
subprojects{
//共有配置
}
//当前project中所有项目均
allprojects {
repositories {
jcenter()
}
}
//clean 任务可以帮助我们删除编译生成的build目录
task clean(type: Delete) {
delete rootProject.buildDir
}
如上,Android Studioi默认是采用jcenter()仓库来获取gradle依赖,jcenter是一种远程的maven依赖库,我们也可以将自己的项目上传jcenter,这样就可以直接在添加jcenter库后通过依赖配置远程依赖编译我们的工程,如高德,百度,facebook等均提供jcenter库依赖方式。同时,除了maven仓库,gradle还支持Ivy仓库,可通过如下方式添加:
//添加仓库,一般在我们导入aar时会用到
repositories {
flatDir {
//编译时会在libs目录下查找依赖
dirs 'libs'
}
}
android 项目中常用的build.gradle如下:
//插件声明,这个也可以自定义
apply plugin: 'com.android.application'
//基本的android 配置
android {
compileSdkVersion 23 //编译的sdk版本
buildToolsVersion "23.0.3" //编译工具的版本
//android的默认配置信息
defaultConfig {
//报名信息,可以没有,若没有会默认从manifest.xml中读取包名
applicationId "com.hfcai.liferecord"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
//发布版
release {
//dex分包属性
minifyEnabled false
//混淆设置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
//测试版
debug{
//配置信息
}
}
//apk签名配置
signingConfigs {
//测试版本
release {
//签名文件路径
storeFile file('../keystore/personal.jks')
//签名文件的密码
storePassword 'personal'
//用户名
keyAlias 'personal'
//用户名的密码
keyPassword 'personal'
}
}
//修改生成的apk名字
applicationVariants.all { variant ->
variant.outputs.each { output ->
//定义无类型属性
def oldFile = output.outputFile
if (variant.buildType.name.equals('release')) {
def releaseApkName = 'test.apk'
output.outputFile = new File(oldFile.parent, releaseApkName)
}
if (variant.buildType.name.equals('debug')) {
}
output.assemble.doLast {
//文件拷贝操作
copy {
from output.outputFile.getAbsolutePath()
into('../Personal/out/apks/')
}
}
}
}
}
//添加Ivy仓库,查找libs下的依赖
repositories {
flatDir {
dirs 'libs'
}
}
//android 的依赖管理配置
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
//Ivy依赖
compile(name: 'AudienceNetwork', ext: 'aar')
}
以上,为android工程编译的一些基本配置,还有类似多渠道打包,新建task任务等。如将依赖包打入jar:
//新建task,编译jar包
task makeJar(type: Jar){
delete 'build/libs/test.jar'
new File('libs').eachFile {
from zipTree(it)
}
from fileTree(dir:'src/main',includes: ['java/**'])
destinationDir = file('build/libs/test.jar')
}
makeJar.dependsOn(build)
可以通过命令 ./gradlew makJar直接执行或者在android studio 右边框的gradle对应工程的Task–>other–makeJar双击执行,执行后会在build/libs下生成一个test.jar文件。
Gradle学习参考
Gradle在Android中的简单使用的更多相关文章
- Gradle在Android中的基本使用
1.基本概念 程序开发作为一种工程作业,不光是编写代码,还涉及到工程的各种管理(依赖,打包,部署,发布,各种渠道的差异管理.....).很多时候,我们反复的build,clean,签名,打包,发布,那 ...
- MVP架构在xamarin android中的简单使用
好几个月没写文章了,使用xamarin android也快接近两年,还有一个月职业生涯就到两个年了,从刚出来啥也不会了,到现在回头看这个项目,真jb操蛋(真辛苦了实施的人了,无数次吐槽怎么这么丑),怪 ...
- android中实现简单的聊天功能
这个例子只是简单的实现了单机版的聊天功能,自己跟自己聊,啦啦~~ 主要还是展示RecyclerView控件的使用吧~ 参考我之前写的文章: android中RecyclerView控件的使用 andr ...
- EventBus在Android中的简单使用
EventBus是一个方便与Android中各组件通信的开源框架,开源地址;https://github.com/greenrobot/EventBus.EventBus功能非常强大 ,今天在做一个功 ...
- Groovy与Gradle在Android中的应用
大家都知道, Android Studio 的编译构建,是基于Gradle的, 而Gradle又是基于Groovy, Groovy又是基于Java的 Android Studio 的gradle 本身 ...
- android 中Log - 简单使用
例如,我们可以使用'Log.d'进行Debug,在java代码中输入Log.d(String tag, String message),tag为自己命名的tag,message为待输出的信息.然后打开 ...
- android中的简单animation(四)3D transition
animation_main_screen.xml: <?xml version="1.0" encoding="utf-8"?> <Fram ...
- android中的简单animation(三)accelerate(加速),decelerate(减速),anticipate,overshoot,bounce
animation_3.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- android中的简单animation(二)push up,push left,cross fade,hyperspace
animation_2.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
随机推荐
- Selenium(八):其他操作元素的方法、冻结界面、弹出对话框、开发技巧
1. 其他操作元素的方法 之前我们对web元素做的操作主要是:选择元素,然后点击元素或者输入字符串. 还有没有其他的操作了呢?有. 比如:比如鼠标右键点击.双击.移动鼠标到某个元素.鼠标拖拽等. 这些 ...
- PHP制作的掷色子点数抽奖游戏实例
PHP制作的掷色子点数抽奖游戏实例,通过掷色子点数来达到抽奖的效果,为抽奖活动增添一些趣味性. 我们将在html页面中写下如下的html结构代码,.wrap用来放置色子和提示信息,#prize则是用来 ...
- docker tomcat8 mysql8部署常见错误
出现docker: out of memory bug ,内存溢出 解决方法: free -mh 应该看一下内存 内存优化/买内存 出现java.util.zip.ZipException: erro ...
- ABP入门教程15 - 小结
点这里进入ABP入门教程目录 效果预览 至此,ABP入门教程的CURD(增删改查)示例已完成,效果如下 登录 首页 查询课程 新增课程 修改课程 删除课程 阶段总结 关键步骤: 领域层创建实体基础设施 ...
- 转战物联网·基础篇06-深入理解MQTT协议之基本术语
通过上一节我们对MQTT协议已经有了初步的印象,这一节我们开始深入的理解一下MQTT协议,介绍常用的MQTT 3.1.1版本,5.0版本后面指介绍新增部分即可.这一节我们先介绍MQTT里常用的术语 ...
- mssql sqlserver 如何编写case when 多条件呢?
摘要: 下文讲述case when中多条件的编写方法,如下所示: 实验环境:sql server 2008 R2 case when 多条件编写方法 case when多条件编写语法: case ...
- MySQL 锁的监控及处理
故障模拟 # 添加两项配置 vi /etc/my.cnf [mysqld] autocommit=0 innodb_lock_wait_timeout = 3600 systemctl restart ...
- 如何通过RMAN使用传输表空间迁移到不同的Endian平台 (Doc ID 371556.1)
How to Migrate to different Endian Platform Using Transportable Tablespaces With RMAN (Doc ID 371556 ...
- airtest自动化测试工具的环境安装与使用
AirtestIDE的下载与安装 AirtestIDE已经帮你集成了所有的环境,自带录制脚本栏,自动生成脚本,自带编辑器还自带模拟器. 下载地址是Airtest的官网:http://airtest.n ...
- 《Web Development with Go》中的html.template
模板应用,深入其它 main.go package main import ( //"encoding/json" "fmt" "log" ...