使用自定义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. 解析 Android(安卓)异步消息机制,深入了解 Handler、Looper、Mess
  2. WebView项目中PhoneGap插件使用细节startActivityForResult
  3. android如何实现文件按时间先后顺序排列显示
  4. Android(安卓)Studio 导入项目和解决常见的错误
  5. 如何过滤Android(安卓)offline log
  6. android 数据库存储之GreenDao的使用
  7. 新版eclipse中NDK环境搭建(免Cygwin,超级快)
  8. 从源码角度分析Activity、Window和DecorView的关系
  9. Android从0到完整项目(1)使用Android(安卓)studio 创建项目详解

随机推荐

  1. SQL今日一题(17):涨幅
  2. 七夕用python给男朋友写的小程序,感动哭了
  3. SQL今日一题(18):3表连接
  4. 离散型随机变量的概率分布
  5. 如何用算法改变生活 | 算法之美
  6. SQL今日一题(15):子查询
  7. QQ音乐评论爬取
  8. 英雄联盟皮肤大拼图
  9. 数据分析都会用到哪些工具?
  10. 终于搞清楚正态分布、指数分布到底是啥了