Android编译打包-gradle task 的依赖

使用自定义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。我们一般最主要使用的是:assemblecleanbuild等。而其中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中添加依赖,或者是doFirstdoLast等相关属性。以便在打包过程中,添加入打包的业务需求。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值