IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android Gradle学习(一) -> 正文阅读

[移动开发]Android Gradle学习(一)


目录:
1、Gradle及Groovy简介
2、Groovy基础到进阶
3、Gradle入门
4、Gradle构建
5、Gradle任务
6、Gradle插件
7、自定义Android Gradle工程
8、Android Gradle多项目构建
9、Android Gradle多渠道构建
10、Android Gradle测试
11、Android Gradle持续集成

一、Gradle及Groovy简介

1、Gradle及自动化构建

(1)Gradle介绍

????Gradle是一款基于Apache的Ant和Maven概念的项目自动化开元构建工具。Gradle的核心是基于Java来实现的,可以把Gradle看成就是一个轻量级的Java应用程序
???? Gradle使用Groovy、Kotlin等语言编写自定义脚本,取代了Ant和Maven使用xml配置文件的方式,很大程度简化了开发时对项目构建要做的配置,使用更加灵活和强大。

(2)为什么要学习Gradle

???? Gradle不仅是目前Android最主流的构建工具。而且不少技术领域如组件化、插件化、热修复,及构建系统(很多优秀的框架都是在编译时或者打包之前做一些特殊的处理),都需要通过Gradle来实现,不懂Gradle将无法完成上述事情,所以学习Gradle非常必要
???? 很多人都了解过这个APT,就是注解处理器,就是在编译时去生成一些代码,这就是一个Gradle和APT的一个使用了。有一些框架还打包成Gradle插件,通过插件在编译之后去修改class字节码的。目的是在应用运行前就把代码执行好,提升应用使用时的运行速度,所以它不仅仅是一个项目依赖管理的工具

(3)关于项目构建

???? 对于Java应用程序,编写好的Java代码需要编译成.class文件才能够执行。所以任何的Java应用开发,最终都需要经过这一步。
????编译好了这些class文件,还需要对其进行打包。打包不仅针对这些class文件,还有所有的资源文件等。比如web工程打包成jar包或者war包就包含了自己的资源文件,然后放到服务器上运行。(就是对资源进行整理,然后放到某一个路径下方便我们去使用)
???? Android工程编译好的class文件还要被打包到dex包中,并且所有的资源文件进行合并处理,甚至还需要对最终打爆出来的文件进行加密和签名处理等等,如下图所示
在这里插入图片描述
???? 后面的是签名和apk加固的过程,早在13年14年,那时候没有apk加固,所以那些搞逆向开发的只要拿到apk,就可以轻松破解然后看到里面的目录结构,可以进行修改里面的代码,现在搞逆向的就比较困难了。

(4)安卓自动化构建发展史

“石器时代”: 自己编写命令脚本,进行编译和打包
“蒸汽时代”: Make(.mk)、Ant(.xml)工具的出现
“电气时代”: Maven
“信息时代”: Gradle,更高级的自动构建工具出现。。。
你们的Gradle可能用了两年 还是没有变,可能还在怪Android Studio,Android Studio没有办法了,出了一个策略,就是那个最低支持几点几版本的Gradle。 其实Gradle配置文件就是一个 闭包,就是一个方法的调用

ext{
 // AA
}
rootProject.ext{
// ...
}

(5)Gradle提供了什么

  • ???? 对多工程的构建支持非常出色,尤其是工程依赖问题,并支持局部构建
  • ???? 多种方式的依赖管理:如远程Maven仓库,nexus私服,ivy仓库活着本地文件系统等。
  • ???? 支持传递性依赖管理
  • ???? 轻松迁移项目工程
  • ???? 基于Groovy等语言构建脚本,简便且灵活
  • ???? 免费开源,并且整体设计是以作为一种语言为导向的,而非成为一个严格死板的框架。

????比如maven 的写法,xml都是需要被解析的,解析成能够执行的代码,而且不够灵活
在这里插入图片描述
????而Gradle,这就是一个可以执行的脚本文件
在这里插入图片描述

2、Groovy介绍

(1)Groovy简介

???? Groovy是一种基于JVM的敏捷开发语言,它结合了python、Ruby和Smalltalk的许多强大的特性,Groovy代码能够与Java代码很好的结合,也能用于扩展现有代码。由于其运行在JVM上的特性,Groovy也可以使用其他非Java语言编写的库

(2)Groovy&Java&Kotlin

???? Groovy、Java及Kotlin都是基于JVM的开发语言
???? Groovy基于Java,在语法上基本相似,但也做了很多自己的扩展。Groovy除了可以面向对象编程,还可以用作纯粹的脚本语言,这一点和Kotlin是一样的。
???? Groovy和 Kotlin都有自己支持的DSL(领域专用语言),两者有许多共通之处

(3)Groovy特性

  • ???? 同时支持静态类型和动态类型
  • ???? 支持运算符重载
  • ???? 支持DSL语法特性
  • ???? 本地语法列表和关联数组
  • ???? 各种标记语言,如XML 和 HTML原生支持
  • ???? 对正则表达式的本地支持
  • ???? Groovy和Java语法非常相似,可以无缝衔接使用Java
  • ???? 支持使用现有的Java库,并做了一定的扩展

Groovy:闭包、MOP编程(元编程)

(4)Hello Groovy

Groovy 与 Java写法上的一些差异:
分号可选,除非会导致语法歧议时才使用分号
return 语句可选
方法,属性默认都是public的
Groovy不强迫捕获异常,看使用者需求
?, 安全导航操作符的使用
闭包的使用结合DSL语法特性等等

实战建一个Groovy项目:
在这里插入图片描述

如果你用idea新建一个项目遇到报错问题,这里给你答案:
intellij 编译groovy报错问题解决

二、Groovy基础到进阶

1、Groovy基础

(1)数据类型

基本数据类型:

  • byte、short、int、long 、float、 double、 char、boolean

包装类(装箱拆箱):

  • String、Byte、Short、Integer、Long、Float、Double、Char、Boolean

自动装箱:因为Groovy具有动态类型特性,所以它从一开始就支持自动装箱。实际上,必要时Groovy会自动将基本类型视作对象。

(2)字符串

  • 单引号字符串是java.lang.String类型,同时不支持插值
  • 双引号字符串在没有使用插值表达式情况下是java.lang.String类型,但如果有插值表达式使用的话,就是groovy.lang.CString类型
  • 三引号字符串表示多行的字符串,不必将字符串分割成几块,也不必用连接符或换行转译字符来将字符串跨行
  • 字符串的使用:
    • 单引号单个字符表示char类型,需要使用as转换
    • ${…}表达式进行插值,去掉花括号不引起歧义的话,可以去掉
    • 可以通过+=,-=操作符添加/减少字符(会自动匹配)

(3)范围

范围是一种特殊的列表,由序列中的第一个和最后一个值表示,Range可以是包含或排除。包含范围包括从第一个到最后一个的所有值,而独占范围包括除最后一个之外的所有值。也可以使用表达式来表示范围,例如:

  • 1…10 包括范围的示例;
  • 1…<10 独占范围的示例(开区间)
  • ‘a’ … ‘x’ 范围也可以由字符串组成;
  • 10…1 范围也可以按降序排列
  • ‘x’…‘a’ 范围也可以由字符组成并按降序排列。同步/异步请求实现 。

(4)映射

映射(也称为关联数组,字典,表和散列)是对象引用的无序集合。Map集合中的元素由键值访问。Map中使用的键可以是任何类,如果不能推断具体key类型,默认就是字符串。
在Groovy中可以使用特定的表述方式来指定映射:

  • [k1:v1,k2:v2] 具有键值对的集合
    [:] 空映射

(5)运算符及控制语句

Groovy支持运算符重载

循环语句:

  • 除了和Java保持差不多的用法外,还支持结合范围的用来进行循环。
  • 组合闭包来实现更简化的循环操作

条件语句:

  • 除了和Java保持差不多的用法外,还多了Groovy的一些扩展
  • 可以组合闭包实现更灵活的条件语句
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-24 10:40:21  更:2021-09-24 10:43:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:29:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码