Android编译打包-gradle task 的依赖

android gradle编译,各个task拆分解析 android gradle编译,各个task拆分解析首先看如下编译命令对应的各个task gradle clean assembleDebug -x lint check –stacktrace :app:clean 该步骤主要是清理上次编译的遗留产物,删除module下的build文件夹 :app:preDebugBuild :app:checkDebugManifest :app:preB 阅读详情

使用自定义gradle打包的好处

现在很多Android开发者使用AndroidStudio软件来开发Android。在AndroidStudio中,使用了一个打包工具gradle。gradle的运行脚本在AndroidStudio平时使用时,一般都是直接使用默认生成的脚本。而有许多开发人员有着不同的打包需求,则可以选择修改gradle脚本来达到打包业务需求。

gradle任务task的依赖关系

在这里,相信网上也有许多针对关于AndroidStudio的gradle配置入门教程。包括一些基本的Android配置。但是,如果我们需要对我们的项目做更深一步的自定义,那么我们需要对gradle的工作方式进行了解。
gradle以执行task为主要工作方式。而task执行的顺序基本上由任务的dependsOn属性设置。当task之间设置了依赖关系,那么在执行一个task之前,其依赖的task会首先被执行。所以,在执行的时候,可以组成task链,安既定顺序执行需要执行的task。

Android插件的依赖图

啰嗦了那么多,重点终于来了。我们在Android的项目中,会使用gradle关于Android的插件。在build.gradle中,我们可看到这个语句:

apply plugin: 'com.android.application'

该插件包含许多的Android相关的task。我们一般最主要使用的是:assemble、clean、build等。而其中assemble是我们用于打包apk所使用的task。在我们需要打包apk并通过adb安装到手机时,我们可以调用:gradle assembleDebug,就能根据源代码和资源打包成输出文件。而这个task的依赖关系比较复杂。所以,我在这里使用图来表示这个assembleDebug的依赖关系:
这里写图片描述
看这个图确实很难让人看得懂其中的顺序。所以,这里也给出了相应task的执行顺序:

:app:preBuild    
:app:preDebugBuild      
:app:checkDebugManifest  
:app:prepareDebugDependencies   
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:generateDebugBuildConfig
:app:generateDebugAssets
:app:mergeDebugAssets
:app:generateDebugResValues
:app:generateDebugResources
:app:mergeDebugResources
:app:processDebugManifest
:app:processDebugResources
:app:generateDebugSources
:app:compileDebugJavaWithJavac
:app:compileDebugNdk
:app:compileDebugSources
:app:transformClassesWithDexForDebug
:app:mergeDebugJniLibFolders
:app:transformNative_libsWithMergeJniLibsForDebug
:app:processDebugJavaRes
:app:transformResourcesWithMergeJavaResForDebug
:app:validateDebugSigning   
:app:packageDebug
:app:zipalignDebug
:app:assembleDebug 

以上的task都是属于app的moudle中的,若有多个module,gradle会为每个module执行一次该task链。
接下来的事情就是自定义,可以在其中的task中添加依赖,或者是doFirst、doLast等相关属性。以便在打包过程中,添加入打包的业务需求。

【Android 修炼手册】Gradle 篇 -- Android Gradle Plugin 主要 Task 分析 现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。 阅读详情

相关推荐

【Android 修炼手册】Gradle 篇 -- Android Gradle Plugin 主要 Task 分析(2)

在 gradle plugin 中的 Task 主要有三种,一种是普通的 task,一种是增量 task,一种是 transform,下面分别看下这三种 task 怎么去读。我们先看看下这个类,这个类表示的是增量 Task,什么是增量呢?是相对于 全量来说的,全量我们可以理解为调用 clean 以后第一次编译的过程,这个就是全量编译,之后修改了代码或者资源文件,再次编译,就是增量编译。 其中比较重要的几个方法如下:public abstract class IncrementalTask extends B

2401_84414832的博客 807

Gradle学习笔记 - 编译过程中部分task作用

在自定义gradle插件时,最头疼的莫过于不知道将插件加入到执行流程中哪个地方,下面梳理了一些主要task的作用: 1、preDebugBuild      获取compile 和 runtime的依赖包并对其做一些版本号,依赖等的校验工作。 2、compileDebugAidl      将aid...

zjf1165的专栏 879

在Wincc8.0的Wincc 3D Control控件中使用3D模型

如果之前没有在Blender中自定义光照,EnableBackground属性选择“是”,Wincc 3D Control会按一个均匀的光照强度渲染。Wincc8.0更新后提供了一个Wincc 3D Control控件来显示3D图像,但是该控件实际体验下来现阶段还存在功能不足、运行不稳定的问题。再把导出的dae文件复制进Wincc项目的GraCS文件夹中,文件名称复制进控件的SceneFile属性里。选择编辑模式,全选模型,点击网格→分离→按材质,分离出不同的部件(不同的部件最好使用不同的材质)。

ghoring的博客 7129

【android 应用】gradle 中定制化编译,以及相关设置

最近需求说要做一个定制化编译,然后就开始研究gradle。以前以为很简单就是个编译工具,偶尔配置下就好了。最后被打脸了,发现对其一点都不了解---一无所知。研究了三天只研究了个皮毛,写下来总结下以后方便查阅。

看图的博客 1157

envi5.3处理高分二号影像数据详细过程记录

全文根据此篇文章进行数据处理: tm影像辐射定标_高分二号影像数据预处理及裁剪过程 其他参考: 学习笔记---遥感影像辐射定标与大气校正 利用ENVI自带全球DEM数据计算区域平均高程 高分二号数据处理流程(有高分二号的数据信息) GF2有多光谱和全色两个数据,MSS是多光谱的,PAN是全色的,多光谱的分辨率低,全色的高,需要把这两个数据融合,融合之前需要做定标等处理,获取经纬度。 一、多光谱影像处理 1. 辐射定标 以这个为例: 其他路径\2022.4.2...

ligous的博客 5万+

基于matlab版本的三维直流电法反演算法

可以使用RESINVM3D工具包等现成的MATLAB工具进行三维直流电法反演。反演问题求解:基于MATLAB的反演问题求解算法实现和应用,包括反演问题数值模拟、反演问题参数优化和反演问题结果分析。希望这个代码示例能帮助你入门三维直流电法反演。如果有更具体的需求或问题,可以进一步探讨。反演过程中可能需要调整正则化参数和优化算法的设置。需要根据实际问题实现,可能涉及复杂的数值计算。

ytttr873的博客 668

Android 编译流程解析02-相关Task解析

Android编译由Gradle Task来完成。 dependencies { classpath 'com.android.tools.build:gradle:3.0.1' } apply plugin: 'com.android.application' //主项目 apply plugin: 'com.android.library' //Library 那我们要如何看到com.android.tools.build:gradle的源码呢? 我们可以在app的gradle引入 comp

朱豪凯的博客 1384

Twin Builder CFD 示例:构建、验证和评估静态 ROM

通过我们构建、验证和评估静态 ROM 的综合指南,释放 Twin Builder CFD 的潜力。

jkh920184196的博客 1102

android定义 task,Android Gradle 自定义Task 详解

一:Gradle 是什么Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。基于 groovy 脚本构建,其 build 脚本使用 groov...

weixin_29166013的博客 1141

Unity Spine 3.8 (URP) 踩坑(Shader报错修改)

提供了新思路,打算尝试一下URP。但美术使用的spine版本是3.8,项目用的Unity2021.3.11f1c2,直接导入spine URP包,shader报错:half4 不能转成 SurfaceData2D;Spine-Sprite-StandardPass-URP-2D.hlsl 也报这个错,也是同样的改法即可。今天搜索spine优化,看到一篇文章。

hrlr1230的博客 4564

CAN总线入门(硬件部分)

这篇博客讲述CAN总线入门知识。

记得诚 1万+

遍历一个简单的android工程中gradle编译时的所有task,打印其依赖和输入输出

我们开发中如果涉及到gradle的开发,经常需要查看各个task的输入输出。我在这里创建了一个空的android项目,然后遍历了它的所有task,及其依赖和输入输出。 遍历的代码非常简单: project.afterEvaluate(new Action<Project>() { @Override public void execute...

星辰旋风的博客 4234

全志A527 T527 android13支持usb摄像头

我们发现usb摄像头在A527 android13上面并不能正常使用,需要支持相关的摄像头。

zhutoubenben的专栏 964

Android Gradle构建工具详解

Gradle是一个强大的构建自动化工具,它支持多种编程语言和项目类型。在Android开发中,Gradle能够自动处理编译、打包、测试等任务,大大提高了开发效率。自动化编译:Gradle能够自动将Java源代码编译成DEX文件,同时支持多种编译语言,如Kotlin。开发者只需配置相应的编译选项,即可实现自动化编译。自动化打包:Gradle支持将编译后的DEX文件与资源文件打包成APK文件。开发者可以通过配置不同的打包选项,生成适用于不同设备和渠道的APK文件。

2501_92488972的博客 750

使用 Python 爬取 YouTube 视频评论(弹幕)

✅ 如何使用 Python 调用 YouTube Data API v3。✅ 如何爬取指定视频的所有评论信息。✅ 如何对评论数据进行初步分析与可视化。✅ 如何扩展功能,实现评论回复获取和多视频批量爬取。

2201_76125261的博客 643

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

百度APP技术团队教你Android:Gradle 与 Android 构建入门(1)

面试是一个不断学习、不断自我提升的过程,有机会还是出去面面,至少能想到查漏补缺效果,而且有些知识点,可能你自以为知道,但让你说,并不一定能说得很好。有些东西有压力才有动力,而学到的知识点,都是钱(因为技术人员大部分情况是根据你的能力来定级、来发薪水的),技多不压身。附上我的面试各大专题整理: 面试指南,满满的都是干货,希望对大家有帮助!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!帮助,可以扫码获取!!(备注:Android)**

2301_79985012的博客 723

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android中Gradle的使用

Gradle是一个基于JVM的构建工具,本文介绍了部分Gradle的基础知识,以及Gradle在Android studio中的使用

wlxyhy的博客 3304

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

gradle是干什么_什么是Gradle

一、什么是Gradle简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建。有些同学可能会有疑问:”我用AS不记得给Gradle指定过什么构建规则呀,最后不还是能搞出来个apk。“ 实际上,app的构建过...

weixin_39678304的博客 1369

Android基础编译流程

前言:该文章为学习笔记,记录Android知识点,大家一起学习。 Android工程的构建打包是一个非常复杂的流程,涉及工程源代码、资源文件、AIDL文件,以及工程所依赖的库文件的编译转换。编译流程非常灵活,因此了解它的一些底层工作原理会很有帮助。 从谷歌官网上找到一张典型的构建流程图: https://developer.android.com/studio/build/index.ht...

我是紫色紫色的专栏 8万+

十分钟理解Gradle

一、什么是Gradle 简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建。有些同学可能会有疑问:”我用AS不记得给Gradle指定过什么构建规则呀,最后不还是能搞出来个apk。“ 实际上,ap...

似水流年 542

Gradle语法(使用编译器AndroidStudio)

1、$符号是个全局变量的引用,例如:"$ApplicationId"就是引用先设置的ApplicaionId配置 2、要用aar文件,要在android{}上加 repositories { flatDir { dirs 'libs' } } 然后再加上implementation(name: 'gowan_commonsdk_...

qq847349571的博客 337

Gradle打包流程

因此本质上都是面对对象的,面向对象的特点是一切皆为对象,所以,在gradle里,.gradle脚本的本质就是类的定义,一些配置项的本质都是方法调用,参数是后面的{}闭包。比如build.gradle对应Project类,buildScript对应Project.buildScript方法。DSL也就是Domain Specific Language的简称,也就是领域特定语言,是为了解决某一类任务专门设计的计算机语言。自动化构建工具,通过组织一系列task来最终完成自动化构建的。三部曲:初始化、配置、执行。

y515278178的博客 989

Android Gradle进阶配置指南

很多第三方SDK需要在AndroidManifest.xml中配置你的一些key信息,以融云为例,测试包和正式包的key是不同的,那么就可以这么写::然后在productFlavors中的各个版本中加上不同的信息,这样你打出的不同包采用的appkey也会不一样。manifestPlaceholders = [rongKey: “8luwapkv8jrrl”]代码中读取变量有时候我们想根据不同的版本,设置相同变量不同的值,最常见的使用场景就是 Log 工具类,通过设置 isDubug 不同值判断是否打印日志.

2401_84415534的博客 1056

android工程编译打包流程(转)

1.Android程序编译、打包、签名、发布的三种方式 方式一:使用eclipse+ADT编译打包 方式二:命令行手动编译打包 方式三:使用ant自动编译打包 2.Android编译、打包的步骤 第一步 生成R.java类文件:  Eclipse中会自动生成R.java,ant和命令行使用android SDK提供的aapt.ext程序生成R.java。 第二

370

Execution failed for task ‘:app:mergeReleaseResources‘.

Android studio离线打包uniapp( HbuilderX版本3.1.22.20210709) 报错: Execution failed for task ':app:mergeReleaseResources'. > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > Could not isolate value com.an..

D_lunar的博客 6002

理解使用Gradle编译打包Android apk

本篇的目的:理解Gradle构建过程,解读Android Gradle插件的配置,提供如何寻找解决问题方法的思路。阅读本文一定是要使用过Gradle生成apk,文中不会讲如何安装运行Gradle,如有需要可先看文末的参考文章。APK包是一个ZIP压缩包,从Java源代码、资源文件到生成这个APK,经过了编译打包一系列特定的过程,这个过程可以参看《使用Ant打包Android应用——apk生成过程》

要想到做到 7861
上一篇: Android多线程-HandlerThread用法与源码解析
codetend
博客等级 码龄11年 0粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值