gradle 构建过程

转载自http://www.jianshu.com/p/cc88488e5163, http://www.jianshu.com/p/2a5b1aa91c52

大概分为如下几个步骤
一、使用aapt工具将res资源文件生成R.java文件
二、使用aidl工具将aidl文件生成对应java文件
三、使用javac命令编译工程源代码和上面两步生成的文件,生成class文件
四、经过dex工具将class文件和第三方jar包打成dex文件
五、用aapt工具将res下的资源文件编译成二进制文件,而后将其和上一步中的dex文件以及assets中的文件经过apkbuilder工具打包成apk文件
六、经过jarsigner对apk进行签名
七、利用zipalign工具对apk进行字节对齐优化操做

1.clean 清理工程 删除build文件夹 // ************** Configuration on demand is an incubating feature ******* 二、preBuild 每一个module 都会执行preBuild 准备配置文件 三、preReleaseBuild 准备release configuration 在 preBuild 以后执行 会依赖preBuild 四、checkReleaseManifest 检查 release下的manifest 在 preReleaseBuild 以后执行 依赖preReleaseBuild 五、preDebugAndroidTestBuild 准备debug下的Test 在preBuild后执行 依赖preBuild 六、preDebugBuild 准备 debug configuration 在preBuild后执行 依赖preBuild 七、preDebugUnitTestBuild 准备 debug下的单元测试构建 在preBuild后执行 依赖preBuild 八、preReleaseUnitTestBuild 准备 release下的单元测试构建 在preBuild后执行 依赖preBuild // ***************** 以上 build 文件夹不存在 *********************************** // **************** 接下来是对依赖的包 进行下载 *********************在build/incremental/exploded-aar下 九、prepareComAndroidSupportSupportV42311Library 生成 Android SupportV4.23.1库支持 在build/incremental/exploded-aar下 十、prepareComNdAndroidSmartcanCommonsUtilAar1205SmartcanReleaseLibrary 生成 smartcan.commons.util-aar.1.2.0.5.smartcan.release 十一、prepareComNdAndroidSmartcanDatalayerAar1205SmartcanReleaseLibrary 生成 smartcan.commons.datalayer-aar.1.2.0.5.smartcan.release 十二、prepareComNdAndroidSmartcanDatatransferAar1205SmartcanReleaseLibrary 生成 smartcan.commons.datatransfer-aar.1.2.0.5.smartcan.release 1三、prepareComNdAndroidSmartcanFrameworkAar1205SmartcanReleaseLibrary 生成 smartcan.commons.framnework-aar.1.2.0.5.smartcan.release 1四、prepareComNdAndroidSmartcanNetworkAar1205SmartcanReleaseLibrary 生成 smartcan.commons.network-aar.1.2.0.5.smartcan.release 1五、prepareComNdAndroidSmartcanSmartcanCoreAar1205SmartcanReleaseLibrary 生成 smartcan.commons.smartcan.core-aar.1.2.0.5.smartcan.release 1六、prepareComNdAndroidSmartcanSmartcanDatacollectionAar1205SmartcanReleaseLibrary 生成 smartcan.commons.datacollection-aar.1.2.0.5.smartcan.release 1七、prepareComNdSdpAndroidProcesscheck108Library 生成 android.process.check.1.0.8 1八、prepareReleaseDependencies 加载 远端的依赖 加载 全部的须要从远端下载的依赖 1九、compileReleaseAidl 编译release环境下的 AIDL文件 依赖prepareDebugDependencies 在build/incremental/aidl/release下 20、compileReleaseRenderscript 编译 release环境下的渲染脚本, Renderscript用来进行高性能计算,是一种类C脚本语言 依赖prepareDebugDependencies 在build/incremental/rs/release下 2一、generateReleaseBuildConfig 会生成 releasse下的 资源和源码 包括BuildConfig 在build/generate/source/buildConfig/release 依赖checkReleaseManifest 2二、generateReleaseAssets 生成 release下的 Assets文件 但没有彻底生成个 算是准备 2三、mergeReleaseAssets 生成 debug下的Assets文件 在 build/intermediates/assets/release下, 和 merge.xml文件 在build/intermediates/incremental/mergeAssets/release下 依赖ReleaseDependencies 2四、generateReleaseResValues 准备resource的 values文件 2五、generateReleaseResources 准备 资源文件 2六、mergeReleaseResources release下的 生成Resource文件 在build/incremental/res/release下 和 merge.xml 在build/intermediates/incremental/mergeResources/release下 2七、processReleaseManifest 依赖prepareReleaseDependencies 生成 AndroidManifest文件 在build/incremental/manifest/full/release 2八、processReleaseResources 生成resources-release.ap_ 在 build/intermediates/resources下 2九、generateReleaseSources 生成R文件 在build/generate/source/r/debug下 30、processReleaseJavaRes 3一、compileReleaseJavaWithJavac 使用Javac编译Java代码 3二、proguardRelease 生成 混淆文件 运行混淆规则 3三、androidJavadocsPicked 3四、copyMappingTask 复制 mapping文件 3五、androidJavadocsJar 生成 Javadocs的Jar文件 3六、androidSourcesJar 生成 Java源码的 Jar文件 3七、compileLint 静态代码检查 3八、copyDebugLint 3九、checkDebugManifest 检查 release下的manifest 在 preDebugBuild 以后执行 依赖preDebugBuild 40、prepareDebugDependencies debug下 加载 远端的依赖 加载 全部的须要从远端下载的依赖 4一、compileDebugAidl 编译debug环境下的 AIDL文件 依赖prepareDebugDependencies 在build/incremental/aidl/debug下 4二、compileDebugRenderscript 编译 debug环境下的渲染脚本 依赖prepareDebugDependencies 在build/incremental/rs/debug下 4三、generateDebugBuildConfig 会生成 debug下的 资源和源码 包括BuildConfig 在build/generate/source/buildConfig/debug 依赖checkDebugManifest 4四、generateDebugAssets 准备 debug下的 Assets文件 4五、mergeDebugAssets 生成 debug下的Assets文件 在 build/intermediates/assets/debug下, 和 merge.xml文件 在build/intermediates/incremental/mergeAssets/debug下 依赖ReleaseDependencies 4六、generateDebugResValues 准备resource的 values文件 件 4七、generateDebugResources 准备 资源文件 4八、mergeDebugResources 生成资源文件 在generateDebugResources后执行 在build/incremental/res/debug下 和 merge.xml在build/intermediates/incremental/mergeResources/debug下 4九、processDebugManifest 依赖prepareReleaseDependencies 生成 AndroidManifest文件 在build/incremental/manifest/full/release 50、processDebugResources 生成resources-debug.ap_ 在 build/intermediates/resources下 5一、generateDebugSources 生成R文件 在build/generate/source/r/debug下 5二、processDebugJavaRes 生成Java资源文件 5三、compileDebugJavaWithJavac 使用Javac编译Java代码 5四、extractDebugAnnotations 5五、mergeDebugProguardFiles 生成混淆文件 5六、compileDebugNdk 编译NDK 5七、packageDebugJniLibs 打包本地依赖包 5八、packageDebugRenderscript 打包渲染脚本 5九、packageDebugResources debug 打包资源文件 60、proguardDebug 混淆 6一、bundleDebug 6二、compileDebugSources 编译java源码 6三、assembleDebug 编译建立Jar包 6四、copyReleaseLint 6五、extractReleaseAnnotations 6六、mergeReleaseProguardFiles 生成混淆文件 在buil/outputs/ 6七、compileReleaseNdk 6八、packageReleaseJniLibs 6九、packageReleaseRenderscript 70、packageReleaseResources 80、bundleRelease 8一、compileReleaseSources 编译 8二、assembleRelease 编译建立Jar包 8三、assemble 包含了项目中的全部打包相关的任务,好比java项目中打的jar包,Android项目中打的apk 8四、lint android静态代码检查 8五、prepareDebugUnitTestDependencies 加载单元测试以来的远程包 8五、processDebugUnitTestJavaRes 生成单元测试 8六、compileDebugUnitTestJavaWithJavac 使用Javac编译Java单元测试代码 8七、compileDebugUnitTestSources 编译单元测试 源码 8八、mockableAndroidJar 8九、assembleDebugUnitTest 编译打包 90、testDebugUnitTestPicked 测试UT 9一、prepareReleaseUnitTestDependencies 加载 UT的依赖 9二、processReleaseUnitTestJavaRes 加载UT须要的资源文件 9三、compileReleaseUnitTestJavaWithJavac 使用Javac编译Java单元测试代码 9四、compileReleaseUnitTestSources 编译单元测试 源码 9五、assembleReleaseUnitTest 编译打包 9六、testReleaseUnitTestPicked 测试UT 9七、test 包含了全部的测试任务 9八、check 包含了项目中全部验证相关的任务 9九、:build 包含全部的 build任务 100、uploadArchivesUploading: 上传