Android 编译优化

673 阅读2分钟

原始文档: qdp21w3pc9.feishu.cn/docs/doccnV…

1 现状分析

工程编译,是Android应用开发工作中的重要一环,在项目体量越来越大的情况下,编译耗时也越来越长,拖慢了开发效率

暂时无法在文档外展示此内容

全量编译/增量编译/安装占据了整个流程的大多数时间,假设全量编译在6分钟,每天运行10次,每天我们浪费在编译上的时间就有60分钟,假设编译时间是3分钟,每天节约0.5小时,

全量编译:项目没有运行过,没有生成特定的缓存文件,初次进行资源代码的编译合并流程。比如clean后。多数用于项目的初次编译打包/清理缓存后编译时。

增量编译:在全量编译后的基础上进行编译,改动/新增/删除/添加都会进行改变的编译不影响整体已有编译的文件。多数用于项目的初次编译/生成缓存文件后编译时。

2 编译流程

整体流程如下

  • aapt 打包资源文件,产生R.java ,resource.arsc , res,manifest.xml

  • aidl 产生java接口文件

  • javac 编译R.java,Aidl产生的java文件以及工程中用到的源码产生.class文件

  • R8混淆和代码压缩.class文件,经过d8 生成.dex文件

  • apk builder 将资源包,.dex打包生成apk文件

  • apksigner /jarSigner 会对apk进行签名

3 编译耗时检测

Build Analyaer

Gradle 命令

$ gradlew app:assemble --profile (Windows)

$ ./gradlew app:assembleDebug --profile (Ubuntu,Mac)

scan

$ gradlew app:assemble --scan(Windows)

$ ./gradlew app:assembleDebug --scan(Ubuntu,Mac)

gradle.com/s/mshp4gfpx…

Android studio

juejin.cn/post/709419…

5 编译优化常规方案

暂时无法在文档外展示此内容

暂时无法在文档外展示此内容

5 大厂方案

暂时无法在文档外展示此内容

6 开源方案

juejin.cn/post/703815…

7 后续规划

www.yuque.com/ibaozi/inst…