百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Android关于Gradle构建流程,简单易懂,收获满满

csdh11 2025-03-20 13:48 13 浏览



读完本文需要4分钟

思考几个问题

以Eclipse为例,开发工具(Eclipse+ADT+SDK)是如果将工程里面的代码(比如.java文件,jar包)和资源文件打包成一个完整的apk的?

猜测点击run as android 背后做了哪些工作?

构建工具是如果构建一个工程的?

一、回顾Android打包过程

简单以其中几个命令举例:

1、Javac : 将所有的.java的源码打成字节码文件,即class。

2、Dx: 将上一步生成的class的文件生成dalvik虚拟机可执行的.dex文件。通过解压任何一个apk文件都可以直接看到(5个dex文件,没有采用冷启动)。至于为什么用dex文件不直接用jar,可以参考:
http://itindex.net/detail/52344-class-%E6%96%87%E4%BB%B6-dex

3、Sign:再导出正式的apk之前会对apk做签名用到这个命令

4、Adb : 生产apk以后,怎么安装到手机上的?adb install –r [apk路径] 其中加了-r表示覆盖安装,不会删除应用的目录文件。

手动打包太麻烦,且容易出错,只能借助自动化的构建工具

常见的构建工具:Ant Maven

Eclipse 的ant编译build.xml。

在sdk 的 tool > ant 目录下面有一个build.xml文件

思考:

Ant作为一个通用的构建工具为什么可以为Android打包呢?

同样在刚才sdk路径中,有一个android.bat的批处理文件,执行该文件可以生成相对应的task。

回到问题,基本上可以这么理解:

Eclipse在执行打包的时候,就是通过执行ant构建命令,找到生成的build.xml文件,按照target的顺序,最终生产完整的apk包。

二、为什么Google推出的Androidstudio采用gradle来构建一个Android项目?

1、基于groovy语言的DSL结构化语言,使用方便

2、丰富的自定义构建过程。如:可以自定义打包得渠道,multiDex 等等。

3、吸收的其他构件工具的长处

4、Repository管理使用的maven的仓库管理

5、定义任务---task ,借鉴了ant 的target的概念,自定义任务。

了解build.gradle文件:

每一个完整的项目会有至少两个build.gradle 文件,gradle就是基于这个文件构建一个Android项目。

apply plugin: 'com.android.application'

还有:

apply plugin: 'com.android.library'

apply plugin: 'maven'

插件化思想:phonegap,Eclipse , Android流行的插件化开发。

Apply可以简单的理解成一个import,类似一个导入功能。满足了打一个apk的要求。

Dependence:依赖于ivy的管理思想

setting.gradle

申明了一个项目里面包括了那几个子工程。

gradle.properites

K-V形式存在的配置文件,可以抽象出功能的配置参数,方便重用和修复。

产出物

本地:Build > outputs >apk /aar。

上传:uploadArchives

通过maven上传到公司仓库上。

这篇文章主要是大致说了一下,工程是怎么构建的,

下篇文章会介绍一些Groovy方面的知识

如果大家觉得好,大家转载的同时,也动动小手点点文章左上角的订阅,关注“AndroidDeveloper”,或者加群“556062010”联系到我,这样就能每天第一时间收到作者推送的文章啦,谢谢大家的关注。

作者:头条号 / AndroidDeveloper

相关推荐

探索Java项目中日志系统最佳实践:从入门到精通

探索Java项目中日志系统最佳实践:从入门到精通在现代软件开发中,日志系统如同一位默默无闻却至关重要的管家,它记录了程序运行中的各种事件,为我们排查问题、监控性能和优化系统提供了宝贵的依据。在Java...

用了这么多年的java日志框架,你真的弄懂了吗?

在项目开发过程中,有一个必不可少的环节就是记录日志,相信只要是个程序员都用过,可是咱们自问下,用了这么多年的日志框架,你确定自己真弄懂了日志框架的来龙去脉嘛?下面笔者就详细聊聊java中常用日志框架的...

物理老师教你学Java语言(中篇)(物理专业学编程)

第四章物质的基本结构——类与对象...

一文搞定!Spring Boot3 定时任务操作全攻略

各位互联网大厂的后端开发小伙伴们,在使用SpringBoot3开发项目时,你是否遇到过定时任务实现的难题呢?比如任务调度时间不准确,代码报错却找不到方向,是不是特别头疼?如今,随着互联网业务规模...

你还不懂java的日志系统吗 ?(java的日志类)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

谈谈枚举的新用法--java(java枚举的作用与好处)

问题的由来前段时间改游戏buff功能,干了一件愚蠢的事情,那就是把枚举和运算集合在一起,然后运行一段时间后buff就出现各种问题,我当时懵逼了!事情是这样的,做过游戏的都知道,buff,需要分类型,且...

你还不懂java的日志系统吗(javaw 日志)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

Java 8之后的那些新特性(三):Java System Logger

去年12月份log4j日志框架的一个漏洞,给Java整个行业造成了非常大的影响。这个事情也顺带把log4j这个日志框架推到了争议的最前线。在Java领域,log4j可能相对比较流行。而在log4j之外...

Java开发中的日志管理:让程序“开口说话”

Java开发中的日志管理:让程序“开口说话”日志是程序员的朋友,也是程序的“嘴巴”。它能让程序在运行过程中“开口说话”,告诉我们它的状态、行为以及遇到的问题。在Java开发中,良好的日志管理不仅能帮助...

吊打面试官(十二)--Java语言中ArrayList类一文全掌握

导读...

OS X 效率启动器 Alfred 详解与使用技巧

问:为什么要在Mac上使用效率启动器类应用?答:在非特殊专业用户的环境下,(每天)用户一般可以在系统中进行上百次操作,可以是点击,也可以是拖拽,但这些只是过程,而我们的真正目的是想获得结果,也就是...

Java中 高级的异常处理(java中异常处理的两种方式)

介绍异常处理是软件开发的一个关键方面,尤其是在Java中,这种语言以其稳健性和平台独立性而闻名。正确的异常处理不仅可以防止应用程序崩溃,还有助于调试并向用户提供有意义的反馈。...

【性能调优】全方位教你定位慢SQL,方法介绍下!

1.使用数据库自带工具...

全面了解mysql锁机制(InnoDB)与问题排查

MySQL/InnoDB的加锁,一直是一个常见的话题。例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?下面是不同锁等级的区别表级锁:开销小,加锁快;不会出现死锁;锁定粒度...

看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

一、什么是死锁加锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。任何事务都需要获得相应对象上的锁才能访问数据,读取数据的事务通常只需要获得读锁(共享锁),修改数据的事务需要获...