- 软件研发中,耗费最多时间的并不是编写代码,而是代码编译和代码不断调试的过程
- 软件试错时间
1. Android基础编译流程
- 编译构建的四个步骤:代码编译:
将源代码,R文件,AIDL生成的文件等 编译成.class文件代码合成:通过dex工具将.class文件和工程依赖的第三方库文件生成虚拟机可执行的.dex文件,如果使用了MultiDex会产生多个dex文件;资源打包:apkbuilder工具将.dex文件,apt编译后的资源文件,三方库中的资源文件打包生成签名对齐的apk文件签名和对齐:使用Jarsigner和Zipalign对文件进行签名和对齐,生成最终的apk文件 - 以下是gradle编译一个app module debug版的task链
![10c3ec9750be9d78b03cfefd7e347223.png](https://i-blog.csdnimg.cn/blog_migrate/712e7425994e5bb6bfe3bbc06d3dcd59.jpeg)
2.InstantRun
AndroidStudio 2.0 推出了InstantRun,意为瞬间编译,在编译开发时减少应用的部署及构建时间
- 需要Gradle2.0以上,minSdkVersion15以上
- 构建流程:代码变更-->编译-->应用构建-->应用部署-->app重启-->activity重启-->完成修改变更
- 实现即时运行的机制:修改代码后,增量构建(产生增量dex),然后通过判断更新资源的复杂度去选择执行热更新,温更新或者冷更新;热部署:生效时不需要重启app,也不需要重启activity温部署:重启activity后才能看到更新冷部署:app需要重启,但不是重新安装
- 运行原理:使用manifest-merger整合项目的manifest,通过aapt工具将合成的AndroidManifest.xml文件与res资源编译到增量apk中;
2,代码修改后,通过javac将java文件编译成class文件,然后打包成dex文件,同样放置在增量apk中;
3.优化gradle编译
- properties配置优化
![7c6e82a26b9385461e52bb12923bc87e.png](https://i-blog.csdnimg.cn/blog_migrate/847192fee30148ad403e672c2729040e.jpeg)
- task任务过滤
选择性的去除并不需要运行的gradle task任务
![ff37cdf96cd42cdd265085ec1791ca0f.png](https://i-blog.csdnimg.cn/blog_migrate/9a31865cb598b7e3243a1da8ad53dced.jpeg)
4.极速
- 增量编译 freeline:
由蚂蚁聚宝 Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时(方案不错,不再多说,已经凉了)
组件化分发
串行的优化规则是 减少重复操作--缓存,减少重复造轮子
并行的优化规则是 分离业务耦合度--解耦,将注意力放到更小的模块中
分发意味着更深度的解耦,对事物粒度进行更细致的分裂,对组件进行扩展
我是今阳,如果想要进阶和了解更多的干货,欢迎关注公众号”今阳说“接收我的最新文章
![7eefddfa30421999667641f781f63fa9.png](https://i-blog.csdnimg.cn/blog_migrate/592407d38ec6f13c0fcd47aa6545320f.jpeg)