赞
踩
gradle是一个免费、开源、通用、灵活的项目构建工具,可用来构建Android项目、打包生成apk。通过gradle生成apk一般需要执行./gradlew clean和./gradlew assembleRelease两个命令,下面通过这两个命令所执行的每个task来分析生成apk的过程。
- ./gradlew clean
- ./gradlew assembleRelease
./gradlew clean命令会执行以下任务:
1. task ':clean'
清理,删除项目根目录下的build文件夹,/build
2. task ':app:clean'
清理,删除app目录下的build文件夹,/app/build
./gradlew assembleRelease命令会执行以下任务:
1. task ':app:preBuild'
预构建,准备构建,在项目根目录下生成build文件夹,在app目录下生成build文件夹
2. task ':app:preReleaseBuild'
预构建,生成/app/build/intermediates/prebuild/release目录,Release是构建类型,下同
3. task ':app:compileReleaseAidl'
编译aidl相关文件,通过aidl工具把.aidl文件编译成.java文件 ,生成的结果在/app/build/generated/source/aidl/release目录
4. task ':app:compileReleaseRenderscript'
编译渲染脚本,
5. task ':app:checkReleaseManifest'
检查清单AndroidManifest.xml,生成/app/build/intermediates/check-manifest/release目录
6. task ':app:generateReleaseBuildConfig'
在/app/build/generated/source/buildConfig/release目录生成BuildConfig.java,构建配置类中有应用ID、构建类型、版本名称等
7. task ':app:prepareLintJar'
准备检查.jar文件
8. task ':app:mainApkListPersistenceRelease'
主要的apk列表持久化
9. task ':app:generateReleaseResValues'
在/app/build/generated/res/resValues/release目录,生成/app/src/main/res/values目录相应的资源值
10. task ':app:generateReleaseResources'
生成资源,即生成color,string,style等resources
11. task ':app:mergeReleaseResources'
合并资源,即合并color,string,style等resources到values.xml
12. task ':app:createReleaseCompatibleScreenManifests'
创建兼容屏幕清单
13. task ':app:processReleaseManifest'
处理清单,生成处理后的/app/build/intermediates/manifests/full/release/AndroidManifest.xml
14. task ':app:splitsDiscoveryTaskRelease'
分裂发现任务
15. task ':app:processReleaseResources'
处理资源
16. task ':app:generateReleaseSources'
生成源码,在/app/build/generated/source/r/release目录生成R.java
17. task ':app:javaPreCompileRelease'
预编译.java文件
18. task ':app:compileReleaseJavaWithJavac'
使用javac编译.java文件,在/app/build/intermediates/classes/release目录生成R.class,BuildConfig.class,MainActiviy.class等.class文件
19. task ':app:compileReleaseNdk'
通过ndk编译.c或.cpp等相关文件
20. task ':app:compileReleaseSources'
编译源码
21. task ':app:lintVitalRelease'
进行至关重要的检查,检查有没有严重错误
22. task ':app:mergeReleaseShaders'
合并着色器,着色器是用来实现图像渲染的
23. task ':app:compileReleaseShaders'
编译着色器
24. task ':app:generateReleaseAssets'
生成资产assets
25. task ':app:mergeReleaseAssets'
合并资产assets
26. task ':app:transformClassesWithDexBuilderForRelease'
使用dex构建器转换.class文件,在/app/build/intermediates/transforms/dexBuilder/release目录生成R.dex,BuildConfig.dex,MainActivity.dex等.dex文件
27. task ':app:transformDexArchiveWithExternalLibsDexMergerForRelease'
使用外部库dex合并器转换.dex归档文件,在/app/build/intermediates/transforms/externalLibsDexMerger/release目录生成classes.dex文件
28. task ':app:transformDexArchiveWithDexMergerForRelease'
使用dex合并器转换.dex归档文件,
在/app/build/intermediates/transforms/dexMerger/release目录生成classes.dex文件
29. task ':app:mergeReleaseJniLibFolders'
合并jniLibs文件夹
30. task ':app:transformNativeLibsWithMergeJniLibsForRelease'
转换本地库文件,合并jni库文件
31. task ':app:transformNativeLibsWithStripDebugSymbolForRelease'
转换本地库文件,剥离调试符号
32. task ':app:processReleaseJavaRes'
处理Java资源
33. task ':app:transformResourcesWithMergeJavaResForRelease'
转换资源,合并Java资源,生成resources.arsc
34. task ':app:validateSigningRelease'
验证签名
35. task ':app:packageRelease'
打包,在/app/build/intermediates/incremental/packageRelease目录生成相关文件
36. task ':app:assembleRelease'
聚集,组合,最终生成/app/build/outputs/apk/release/app-release.apk
————————————————
版权声明:本文为CSDN博主「KyleWo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/KyleWo/article/details/82632154
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。