26 | 关于编译,你需要了解什么?
张绍文
该思维导图由 AI 生成,仅供参考
作为 Android 工程师,我们每天都会经历无数次编译;而对于大型项目来说,每次编译就意味着要花去一杯咖啡的时间。可能我讲具体的数字你会更有体会,当时我在微信时,全量编译 Debug 包需要 5 分钟,而编译 Release 包更是要超过 15 分钟。
如果每次编译可以减少 1 分钟,对微信整个 Android 团队来说就可以节约 1200 分钟(团队 40 人 × 每天编译 30 次 × 1 分钟)。所以说优化编译速度,对于提升整个团队的开发效率是非常重要的。
那应该怎么样优化编译速度呢?微信、Google、Facebook 等国内外大厂都做了哪些努力呢?除了编译速度之外,关于编译你还需要了解哪些知识呢?
关于编译
虽然我们每天都在编译,那到底什么是编译呢?
你可以把编译简单理解为,将高级语言转化为机器或者虚拟机所能识别的低级语言的过程。对于 Android 来说,这个过程就是把 Java 或者 Kotlin 转变为 Android 虚拟机运行的Dalvik 字节码的过程。
但今天我们的重点不是底层的编译原理,而是希望一起讨论 Android 编译需要解决的问题是什么,目前又遇到了哪些挑战,以及国内外大厂又给出了什么样的解决方案。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了Android工程师日常必备技能——编译对团队开发效率的重要性,以及优化编译速度的必要性。通过微信团队的实际案例,强调了每次编译节约1分钟对整个团队的时间节省是巨大的。同时,还介绍了国内外大厂在编译速度优化方面的努力,如微信、Google、Facebook等。文章还提到了编译速度之外,读者还需要了解的编译相关知识,包括编译构建流程、统一编译工具、代码组织管理架构等。此外,还详细讨论了编译速度的重要性,以及针对编译速度优化的建议,如更换编译机器、使用Build Cache、升级Gradle和SDK Build Tools等。总体而言,本文为Android工程师提供了关于编译速度优化的全面指南,帮助他们提高团队开发效率。文章还介绍了一些优化工具,如AAPT2、d8、R8和ReDex,以及它们的作用和优势。通过本文,读者可以快速了解编译对团队开发效率的影响,以及如何优化编译速度的重要性,同时也可以了解到国内外大厂在这方面的努力和相关知识。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》,新⼈⾸单¥59
《Android 开发高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(17)
- 最新
- 精选
- Mograine微信这么大的一个app,android才40人?
作者回复: 兵不在多
2019-02-19218 - 汪海游龙对编译有了更深的认识,另外,Gradle 官方有个 build-scan 的功能,可以生成构建期间的详细报告,其中有性能相关的统计,可以帮助分析一些耗时的 task 等。
作者回复: 是的,profile也是可以的
2019-02-208 - 饮识止渴(Vilin)odex文件,oat文件什么区别?是同时存在的吗?
作者回复: 是同一个东西,oat文件,它的格式是.odex
2019-03-173 - zp看到有用到热修复的方法,这个基于插件化技术的方式在安卓9.0以后就用不了吧,这个怎么解决呢?
作者回复: 并没有用不了吧
2019-05-202 - Victory以前用的windows 每次编译基本要两分钟了,特别影响开发效率,现在换的mac,比以前快了,但还是觉得慢😊
作者回复: 这就需要我们尝试去优化了
2019-03-19 - splm1.为什么把常量替换成方法对于大项目不行?是因为方法数吗? 2.对于annotation processor出现全量更新问题,gradle4.7的文档该如何解读?
作者回复: 1. 因为代码太多太乱,而且很多都是历史代码 2.可以去看看官方文章以及提交的代码
2019-02-26 - xlogic请问作者有没有了解过 JRebel for Android,虽然现在下线了,但是去年我用的时候感觉热部署很快,不知道是啥原理?
作者回复: 记得应该是类似热修复的原理,之前有专门研究过
2019-02-19 - 恒项目大了之后,一直受编译速度的折磨,即使换了机器,依旧还是那么慢,真的很恼火。google flutter的秒级编译速度刚开始确实让我眼前一亮,只可惜用flutter写的代码太难看了,不知道业界有什么办法能让flutter代码更加简洁一些呢?
作者回复: 只要Flutter开发者的盘子够大,后面的很多配套项目都会成熟起来
2019-02-192 - Innocence编译原理的三大经典巨作:龙书、虎书、鲸鱼书, 这个链接访问不到了2021-05-1314
- 程序员小跃其实做人、做事也是如此,我们经常会陷入局部最优解的困局,或者走进“思维怪圈”,这时如果能跳出路径依赖,从更高的维度重新思考、审视全局,得到的体会可能会完全不一样。----最近在搞Java的微服务,很多问题一直困扰,我就出去走走,休息下,然后回去尝试从其他路径解决,效果真的还行2019-06-154
收起评论