Gradle 介绍一

一、Gradle 下载和安装

Gradle 的官网:http://gradle.org/
文档位置:https://docs.gradle.org/current/release-notes
其中的UserGuide 和DSL Reference 很关键。User Guide 就是介绍Gradle
的一本书,而DSLReference 是Gradle API 的说明。
安装as 之后就安装好了

Linux:/Home/softInstall/android-studio/gradle/gradle-2.8
Windows:D:\ProgramFiles\Android\AndroidStudio\gradle\gradle-2.2.1

也可以单独下载,官网下载地址:
http://gradle.org/gradle-download/ ,选择Completedistribution 和Binary
only distribution 都行。然后解压到指定目录。

二、gradle 配置

Gradle 的配置主要是配置环境变量

1、Windows:
配置GRADLE_HOME–>C:\Program Files\Android\Android
Studio\gradle\gradle-2.2.1
配置GRADLE_USER_HOME–>D:\java\gradle.gradle,默认是在
C:\Users\Administrator.gradle 选择性的修改
配置path–>
%GRADLE_HOME%\bin,%GRADLE_HOME%,%GRADLE_USER_HOME%

2、Linux:
设置~/.bashrc,把 Gradle 加到 PATH 里:
GRADLE_HOME=/data/nishome/tdsw1/pengan.li/softInstall/android-stu
dio/gradle/gradle-2.8
GRADLE_USER_HOME=/data/nishome/tdsw1/pengan.li/.gradle
export PATH= GRADLEHOME/bin: PATH
export PATH= GRADLEUSERHOME/bin: PATH
执行 source ~/.bashrc,初始化环境。
执行 gradle
–version,如果成功运行就 OK 了。

三、构建概述

构建,叫 build 也好,叫 make 也行。反正就是根据输入信息然后干一堆事
情,最后得到几个产出物。Android 中简单理解就是生成 app 的过程。最简单
的构建工具就是 make 了。make 就是根据 Makefile 文件中写的规则,执行对
应的命令,然后得到目标产物。
日常生活中,和构建最类似的一个场景就是做菜。输入各种食材,然后按固
定的工序,最后得到一盘菜。当然,做同样一道菜,由于需求不同,做出来的东
西也不尽相同。比如,宫保鸡丁这道菜,回民要求不能放大油、口淡的要求少放
盐和各种油、辣不怕的男女汉子们可以要求多放辣子。总之,做菜包含固定的工
序,但是对于不同条件或需求,需要做不同的处理。
在 Gradle 之前,常用的构建工具是 ANT,然后又进化到 Maven。ANT 和
Maven 这两个工具其实也还算方便,现在还有很多地方在使用。但是二者都有
一些缺点,这点后面再说。

四、gradle 构建

Gradle 百度百科:Gradle 是一个基于 Apache Ant 和 Apache Maven 概
念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言(DSL)来声
明项目设置,抛弃了基于 XML 的各种繁琐配置。面向 Java 应用为主。当前其支持的语言限于 Java、Groovy 和 Scala,计划未来将支持更多的语言。
通俗的说,gradle 是打包用的。为什么要打包发布,打包发布有几种常见
方法,为什么这些常见方法中要选 gradle?
以在 eclipse 里面写 java 程序为例

(1)为什么需要打包:
最初写完了,直接右键 run 就可以了。但是程序写完了毕竟是要发布到服
务器上或者给别人用的,你第一不可能让所有要运行的人都装个 eclipse,第二
不可能把源代码公布给所有人。所以你需要把你的代码发布成二进制形式,让其
它环境方便运行,这就是打包。

(2)为什么用 ant
打包的时候要做很多事,比如说配置文件中的用户名和密码,你本地开发和
程序实际运行时的内容肯定不一致,所以需要有两个文件,开发的时候用一个,
实际运行的时候用一个。这样每次打包的时候都要重复的做这些事,ant 可以让
你用 xml 的形式把这些事情写成脚本,然后自动运行。

(3)为什么用 maven
你的项目要用很多 jar 包,比如你写日志要用 log4j,连数据库要用个
connector。JavaWeb 要使用 Spring,下载下来的 spring 包打开一看,密密
麻麻的好几十个 jar,不知道用哪个不用哪个。而且,即便是你一狠心把这些 jar
包都放进来,很大可能性还是不能运行,因为还要依赖其它的 jar 包。哪天想升
级个 spring 小版本,所有 jar 包都要重来一遍,你也不记得哪些是由于 spring
引进来的 jar 包了。
所以有了 maven,你只要配置一下说我要用 spring 3,所有 jar 包都给你
下载好了,你直接运行就行了。什么时候想升级版本,直接把 3 改成 4,新的 jar
包也给你下载好了。相比于 ant,它多做的事是帮你下载 jar 包。但是 maven
的打包逻辑太死板,定制起来太麻烦,不如 ant 好用。

(4)为什么用 gradle
然后用了 maven,jar 包是方便了,但我打包的时候还是有好多事要做啊,
你会发现 maven 实在是不知道怎么做这些事,Maven 引入的 XML 配置文件可读性和可扩展性比较差,XML 虽然通俗易懂,但是很难在 xml 中描述 if{某条件
成立,编译某文件}/else{编译其他文件}这样有不同条件的任务。于是开始怀念
ant。gradle 就是又能干 maven 的活,又能干 ant 的活,用 groove 语言写脚
本,表达能力还更强。gradle 就是又能自动下 jar 包,又能自己写脚本,并且脚
本写起来还比 ant 好用的这么个东西。一句话概括就是:依赖管理和任务执行。
Ant 与 Maven 对于 Gradle,前者编写容易,但功能有限,需要人工操作的
过程也多;后者依托于庞大的依赖仓库,因此有着强大的外部依赖管理,但添加
本地依赖并不方便,且项目不能灵活修改。而 Gradle 能很好地结合 Ant 与
Maven 各自的优点,可以随意的编写任务并组合成项目,直接利用 Maven 仓
库,并且能很好的支持依赖管理。
通俗一点类比成吃饭的话,大致就是: Ant 是自己买菜洗菜烧水做饭,
Maven 是去饭店点餐,Gradle 是 3D 打印食物。总而言之,Gradle 并没有引
入太新鲜的东西,它是一个结合 Ant 和 Maven 理念的优秀实现。
软件开发也是一种工程作业,绝不仅仅是写代码,还涉及到工程的各种管理
(依赖,打包,部署,发布,各种渠道的差异管理…..),开发者每天都在 build,clean,签
名,打包,发布,有没有想过这种过程,也可以像代码一样被描述出来, 也可以被复
用。整个过程可以分成以下几个步骤:
1) 编译源代码
2) 运行单元测试和集成测试
3) 执行静态代码分析、生成分析报告
4) 创建发布版本
5) 部署到目标环境
6) 执行功能测试
如果你手工去操作这些过程会很繁琐,效率低下,Gradle 提供自动化的构建机
制,上面的每个步骤都可以表示成 Gradle 里面的一个任务(Task),任务之间可
以相互依赖。见 androidstudio 中的 tasks。Gradle 脚本是基于 Groovy 领域
特定语言,也就是说构建文件也是代码。Gradle 可以让你像写代码一样写出容
易维护、可复用、可读性好、易于理解的构建代码。

1、差异管理:多渠道打包做 Android 开发的,你可知道国内有 n 个 Android 市场,n 个手机品牌,n 个手机尺寸,一般公司都会针对不同的市场单独发包用来统计不同渠道的下载量等情况,可能需要针对不同(品牌,尺寸等各种硬件信息)的手机做一些特殊的处理。
上面的多渠道问题,不同的渠道一般会对应不同的渠道号,你当然可以通过修改一
次打一个包这种纯手工的方式来生成你的多渠道包,但据听说国内某团购网站的
Android App 有 100 多个渠道.这里出现了什么?重复,反复的去打包而且这些包
之前的差异很小(只是渠道号不同),和写代码一样我们应该复用,通过Gradle可以
实现一个命令打出所有的渠道包,一个命令打出指定的渠道包.再复杂一点,你可
能需要不同的渠道对应不同的签名文件,不同的 icon,不同的服务器地址…这些都
可以通过 Gradle 来方便的实现.

2、依赖管理
依赖管理:简单地说就是你只用写一行代码就可以自动帮你把 jar/aar 包下
载下来并能被当前工程所使用。
做软件开发你可能需要依赖各种不同的 jar,library.你当然可以通过
将.jar/library 工程下载到本地再 copy 到你的工程中,但不知你是否听说过国外
有个叫中央仓库的东西,在这个仓库里你可以找到所有你能想到以及你从来没听
说过的 jar,aar…这里可以找到所有你需要的依赖,如下:
dependencies
//表示编译期依赖 appcompat-v7 这个库
compile(‘com.android.support:appcompat-v7:23.0.1’)
}
剩下的依赖的寻找,下载,添加到 classpath 等你都不需要去关心,通过这种方式来
维护依赖的好处有以下几点:
a. 依赖不会进入到你的版本控制仓库中(默认会缓存到~/.gradle/下)
b. 方便卸载装载依赖(只是一条坐标依赖,不需要删除即可)
c. 方便的版本管理,如上图中的 23.0.1 是 appcompat-v7 的版本号。
d. gradle 还可以支持动态版本,只需要把最后一位数字改成+号。
e. 不同工程的相同依赖不会存在重复副本(只在~/.gradle 下存在一份)

内容概要:本文围绕“组稀疏信号去噪”展开,深入研究了基于非凸正则化与凸优化的信号处理方法,并提供了完整的Matlab代码实现。文章系统阐述了如何通过引入非凸正则项克服传统稀疏恢复方法的局限性,从而在语音增强等实际应用中实现更优的去噪性能。研究采用组稀疏建模范式,将信号按子带或时频块进行分组,以更好地保留信号的结构性特征。文中详细构建了相应的数学模型,将原始优化问题转化为可通过凸优化技术求解的形式,并设计了高效的求解算法。通过全面的仿真实验,验证了该方法在提升信噪比和改善语音主观质量方面的显著优势,尤其在强噪声环境下表现出更强的鲁棒性。; 适合人群:具备定信号处理理论基础和Matlab编程能力的研究生、科研人员,以及从事语音增强、音频处理、通信工程等相关领域的技术研发人员。; 使用场景及目标:①应用于语音通信系统、智能助听设备、语音识别前端预处理等对语音清晰度要求高的场景,有效提升嘈杂环境下的语音可懂度;②为科研工作者提供个将非凸正则化理论与凸优化算法相结合的完整研究范例,促进先进信号恢复算法在实际工程系统中的转化与应用。; 阅读建议:建议读者结合提供的Matlab代码,深入剖析算法实现的核心步骤,重点关注目标函数的设计理念、非凸正则项的选取依据以及优化求解器的具体实现;同时,鼓励通过调整算法参数或在不同类型的噪声环境中进行测试,以探究算法的性能边界和鲁棒性特征。
内容概要:本文档聚焦于三电平ANPC并网逆变器的先进控制策略研究,重点阐述了种融合DPWMA(离散脉宽调制)调制、正负序电流分离控制与电网电压前馈补偿的复合控制方法,并基于Simulink平台完成了系统建模与仿真验证。该方法旨在提升逆变器在电网电压不平衡等复杂工况下的动态响应性能与运行稳定性,特别针对低电压穿越(LVRT)能力进行了优化设计。研究内容还涵盖了中点电位平衡控制、虚拟同步发电机(VSG)技术以及构网型逆变器的双闭环控制架构,体现了对高阶电力电子变换系统深层次的建模与控制探索。文档同时罗列了大量相关的MATLAB/Simulink仿真实例,覆盖电力电子、新能源并网、优化算法、机器学习、路径规划等多个前沿科研领域,强调了科研工作中“借力”现有成果与追求“创新”突破的双重重要性。; 适合人群:从事电力电子与电力传动、新能源发电系统、微电网与智能电网控制等相关领域的研究生、科研人员及工程技术人员,要求具备扎实的电力系统基础知识、现代控制理论背景以及熟练的MATLAB/Simulink仿真操作能力。; 使用场景及目标:①深入研究三电平ANPC逆变器在不平衡电网条件下的高性能控制策略;②实现DPWMA调制技术与正负序电流独立控制的协同仿真与性能评估;③设计并验证融合电网前馈补偿与中点电位平衡的复合控制算法;④作为高级电力电子系统仿真与构网型控制技术的学习范本与项目开发参考。; 阅读建议:建议读者结合文档指引,通过指定公众号或网盘获取完整的仿真模型资源,在Simulink环境中动手复现核心控制模块,重点关注正负序分离算法、DPWMA调制波生成逻辑与前馈控制环节的实现细节,同时参考文末列出的多样化研究方向,以拓宽技术视野并激发创新思维。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值