Gradle进阶篇:有关AGP插件详解

前言

前面几篇文章我们讲解了关于关于Gradle的基础Gradle生命周期Gradle相关Api的讲解,以及Gradle自定义插件,Gradle Maven仓库管理.

Gradle系列文章如下:

Gradle筑基篇:

Gradle进阶篇

今天这篇文章我们来讲解下Android Gradle Plugin相关知识。

简化起见:本文所指AGP:Android Gradle Plugin

1.Gradle PluginAGP的区别?

Gradle PluginGradle构建过程中使用的插件的总称,而Android Gradle Plugin是这个总称里面的一个插件元素.

Android Gradle Plugin配合Gradle构建我们的应用apk

2.apk构建流程

典型 Android 应用模块的构建流程。

按照以下常规步骤执行:

  • 1.将源文件和class文件编译组合后编译为dex文件
  • 2.将资源文件转换为编译后的资源文件
  • 3.将dex文件和编译后的资源文件打包为apk文件
  • 4.使用签名工具对文件进行签名
  • 5.生成最终apk之前,会使用 zipalign 工具对应用进行优化,减小apk运行时内存

在Gradle控制面板:执行assemble任务看看:

Line 172: > Task :application:preBuild UP-TO-DATE //编译预处理任务:空实现
	Line 176: > Task :application:preF1F3DebugBuild UP-TO-DATE //preF1F3DebugBuild F1F3变体预处理任务
	Line 180: > Task :application:compileF1F3DebugAidl NO-SOURCE //编译aidl文件
	Line 184: > Task :application:compileF1F3DebugRenderscript NO-SOURCE //编译绘制脚本文件
	Line 188: > Task :application:dataBindingMergeDependencyArtifactsF1F3Debug UP-TO-DATE //dataBinding依赖的类库或者插件合并
	Line 192: > Task :application:dataBindingMergeGenClassesF1F3Debug UP-TO-DATE //dataBinding依赖的class文件合并
	Line 196: > Task :application:generateF1F3DebugResValues UP-TO-DATE //生成ResValues 
	Line 200: > Task :application:generateF1F3DebugResources UP-TO-DATE//生成编译后的Resources
	Line 204: > Task :application:mergeF1F3DebugResources UP-TO-DATE //合并资源文件
	Line 208: > Task :application:dataBindingGenBaseClassesF1F3Debug UP-TO-DATE
	Line 212: > Task :application:dataBindingTriggerF1F3Debug UP-TO-DATE
	Line 216: > Task :application:generateF1F3DebugBuildConfig UP-TO-DATE 生成BuildConfig文件
	Line 220: > Task :application:javaPreCompileF1F3Debug UP-TO-DATE //java预编译
	Line 224: > Task :application:checkF1F3DebugAarMetadata UP-TO-DATE  //检测aar的元数据
	Line 228: > Task :application:createF1F3DebugCompatibleScreenManifests UP-TO-DATE 
	Line 232: > Task :application:extractDeepLinksF1F3Debug UP-TO-DATE
	Line 236: > Task :application:processF1F3DebugMainManifest UP-TO-DATE //处理MainManifest
	Line 240: > Task :application:processF1F3DebugManifest UP-TO-DATE //处理Manifest
	Line 244: > Task :application:processF1F3DebugManifestForPackage UP-TO-DATE//处理ManifestForPackage 
	Line 248: > Task :application:processF1F3DebugResources UP-TO-DATE//处理Resources
	Line 252: > Task :application:compileF1F3DebugJavaWithJavac UP-TO-DATE //编译原代码为class文件
	Line 256: > Task :application:compileF1F3DebugSources UP-TO-DATE//编译Sources
	Line 260: > Task :application:mergeF1F3DebugNativeDebugMetadata NO-SOURCE
	Line 264: > Task :application:mergeF1F3DebugShaders UP-TO-DATE
	Line 268: > Task :application:compileF1F3DebugShaders NO-SOURCE
	Line 272: > Task :application:generateF1F3DebugAssets UP-TO-DATE //生成Assets
	Line 276: > Task :application:mergeF1F3DebugAssets UP-TO-DATE //合并Assets
	Line 280: > Task :application:compressF1F3DebugAssets UP-TO-DATE //压缩Assets
	Line 284: > Task :application:checkF1F3DebugDuplicateClasses UP-TO-DATE //检测DuplicateClasses
	Line 288: > Task :application:desugarF1F3DebugFileDependencies UP-TO-DATE
	Line 292: > Task :application:mergeExtDexF1F3Debug UP-TO-DATE //合并des
	Line 296: > Task :application:processF1F3DebugJavaRes NO-SOURCE //处理JavaRes
	Line 300: > Task :application:mergeF1F3DebugJavaResource UP-TO-DATE //合并JavaResource
	Line 304: > Task :application:mergeLibDexF1F3Debug UP-TO-DATE //合并lib的dex
	Line 308: > Task :application:dexBuilderF1F3Debug UP-TO-DATE //dexBuilder
	Line 312: > Task :application:mergeProjectDexF1F3Debug UP-TO-DATE//mergeProjectDex
	Line 316: > Task :application:mergeF1F3DebugJniLibFolders UP-TO-DATE//合并JniLibFolders
	Line 320: > Task :application:mergeF1F3DebugNativeLibs UP-TO-DATE//合并NativeLibs
	Line 324: > Task :application:stripF1F3DebugDebugSymbols NO-SOURCE
	Line 328: > Task :application:validateSigningF1F3Debug UP-TO-DATE //检测签名
	Line 332: > Task :application:packageF1F3Debug UP-TO-DATE //打包变种
	Line 336: > Task :application:assembleF1F3Debug UP-TO-DATE//打包变种
复制代码

可以看到打包apk的任务基本和前面图片里面描述的流程一致,整个过程都是编译然后合并,打包的过程

主要涉及

  • 1.资源文件。
  • 2.源文件。
  • 3.库文件的资源
  • 4.库文件的class文件,
  • 5.jni的静动态库信息,
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值