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 ...
随机推荐
- 十八道JVM面试题总汇(附解析)
一.Java 类加载过程? Java 类加载需要经历以下7 个过程: 1. 加载 加载是类加载的第一个过程,在这个阶段,将完成以下三件事情: • 通过一个类的全限定名获取该类的二进制流. • 将该二进 ...
- automaticallyAdjustsScrollViewInsets
参考链接: https://www.jianshu.com/p/a1987a7c11ba
- 从0系统学Android-2.4 Activity 的生命周期
本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 本系列持续更新中.... 2.4 Activity 的生命周期 掌握 Activity 的生命周期对于开发者来说是 ...
- ABP入门教程7 - 基础设施层更新数据库
点这里进入ABP入门教程目录 设置数据库 在基础设施层(即JD.CRS.EntityFrameworkCore)打开数据库环境设置 JD.CRS.EntityFrameworkCore/EntityF ...
- Linux—修改文件权限、文件拥有者以及文件所在组
修改文件权限——chmod 修改文件拥有者——chown 修改文件所属组群——chgrp
- [Linux] nginx记录多种响应时间
官网介绍$request_time – Full request time, starting when NGINX reads the first byte from the client and ...
- Python3+Requests+Excel完整接口自动化框架
框架整体使用Python3+Requests+Excel:包含对实时token的获取 框架结构图 1.------base -------runmethond.py runmethond:对不同的请求 ...
- Python Django,事务,transaction.atomic,事务保存点
from django.shortcuts import renderfrom django.http import HttpResponsefrom django.views.generic imp ...
- 你不知道的 flex-shrink 计算规则
对于 flex-shrink 我们都知道它在 flex 布局中控制 flex 盒子空间不足时子元素改如何收缩,平常开发中更多的是使用默认值 1 或者设置 0.那设置其他值的时候会有什么效果呢,不少文章 ...
- 洛谷 SP14932 LCA - Lowest Common Ancestor
洛谷 SP14932 LCA - Lowest Common Ancestor 洛谷评测传送门 题目描述 A tree is an undirected graph in which any two ...