Android开发高手课
张绍文
前微信高级工程师,Tinker负责人
立即订阅
12609 人已学习
课程目录
已完结 61 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 焦虑的移动开发者该如何破局?
免费
导读 (1讲)
导读 | 如何打造高质量的应用?
模块一 高质量开发 (25讲)
01 | 崩溃优化(上):关于“崩溃”那些事儿
02 | 崩溃优化(下):应用崩溃了,你应该如何去分析?
03 | 内存优化(上):4GB内存时代,再谈内存优化
04 | 内存优化(下):内存优化这件事,应该从哪里着手?
05 | 卡顿优化(上):你要掌握的卡顿分析方法
06 | 卡顿优化(下):如何监控应用卡顿?
06补充篇 | 卡顿优化:卡顿现场与卡顿分析
07 | 启动优化(上):从启动过程看启动速度优化
08 | 启动优化(下):优化启动速度的进阶方法
09 | I/O优化(上):开发工程师必备的I/O优化知识
10 | I/O优化(中):不同I/O方式的使用场景是什么?
11 | I/O优化(下):如何监控线上I/O操作?
12 | 存储优化(上):常见的数据存储方法有哪些?
13 | 存储优化(中):如何优化数据存储?
14 | 存储优化(下):数据库SQLite的使用和优化
15 | 网络优化(上):移动开发工程师必备的网络优化知识
16 | 网络优化(中):复杂多变的移动网络该如何优化?
17 | 网络优化(下):大数据下网络该如何监控?
18 | 耗电优化(上):从电量优化的演进看耗电分析
19 | 耗电优化(下):耗电的优化方法与线上监控
20 | UI 优化(上):UI 渲染的几个关键概念
21 | UI 优化(下):如何优化 UI 渲染?
22 | 包体积优化(上):如何减少安装包大小?
23 | 包体积优化(下):资源优化的进阶实践
24 | 想成为Android高手,你需要先搞定这三个问题
模块二 高效开发 (9讲)
25 | 如何提升组织与个人的研发效能?
26 | 关于编译,你需要了解什么?
27 | 编译插桩的三种方法:AspectJ、ASM、ReDex
28 | 大数据与AI,如何高效地测试?
29 | 从每月到每天,如何给版本发布提速?
30 | 数据评估(上):如何实现高可用的上报组件?
31 | 数据评估(下):什么是大数据平台?
32 | 线上疑难问题该如何排查和跟踪?
33 | 做一名有高度的移动开发工程师
模块三 架构演进 (9讲)
34 | 聊聊重构:优秀的架构都是演进而来的
35 | Native Hook 技术,天使还是魔鬼?
36 | 跨平台开发的现状与应用
37 | 移动开发新大陆:工作三年半,移动开发转型手游开发
38 | 移动开发新大陆:Android音视频开发
39 | 移动开发新大陆: 边缘智能计算的趋势
40 | 动态化实践,如何选择适合自己的方案?
41 | 聊聊Flutter,面对层出不穷的新技术该如何跟进?
42 | Android开发高手课学习心得
练习Sample跑起来 (8讲)
练习Sample跑起来 | 热点问题答疑第1期
练习Sample跑起来 | 热点问题答疑第2期
练习Sample跑起来 | 热点问题答疑第3期
练习Sample跑起来 | 热点问题答疑第4期
练习Sample跑起来 | ASM插桩强化练习
练习Sample跑起来 | 唯鹿同学的练习手记 第1辑
练习Sample跑起来 | 唯鹿同学的练习手记 第2辑
练习Sample跑起来 | 唯鹿同学的练习手记 第3辑
特别放送 (7讲)
Android JVM TI机制详解(内含福利彩蛋)
专栏学得苦?可能是方法没找对
专栏学得苦?可能你还需要一份配套学习书单
Native下如何获取调用栈?
聊聊Framework的学习方法
Android工程师的“面试指南”
程序员修炼之路 | 设计能力的提升途径
结束语 (1讲)
结束语 | 移动开发的今天和明天
Android开发高手课
登录|注册

26 | 关于编译,你需要了解什么?

张绍文 2019-02-19
作为 Android 工程师,我们每天都会经历无数次编译;而对于大型项目来说,每次编译就意味着要花去一杯咖啡的时间。可能我讲具体的数字你会更有体会,当时我在微信时,全量编译 Debug 包需要 5 分钟,而编译 Release 包更是要超过 15 分钟。
如果每次编译可以减少 1 分钟,对微信整个 Android 团队来说就可以节约 1200 分钟(团队 40 人 × 每天编译 30 次 × 1 分钟)。所以说优化编译速度,对于提升整个团队的开发效率是非常重要的。
那应该怎么样优化编译速度呢?微信、Google、Facebook 等国内外大厂都做了哪些努力呢?除了编译速度之外,关于编译你还需要了解哪些知识呢?

关于编译

虽然我们每天都在编译,那到底什么是编译呢?
你可以把编译简单理解为,将高级语言转化为机器或者虚拟机所能识别的低级语言的过程。对于 Android 来说,这个过程就是把 Java 或者 Kotlin 转变为 Android 虚拟机运行的Dalvik 字节码的过程。
编译的整个过程会涉及词法分析、语法分析 、语义检查和代码优化等步骤。对于底层编译原理感兴趣的同学,你可以挑战一下编译原理的三大经典巨作:龙书、虎书、鲸鱼书
但今天我们的重点不是底层的编译原理,而是希望一起讨论 Android 编译需要解决的问题是什么,目前又遇到了哪些挑战,以及国内外大厂又给出了什么样的解决方案。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Android开发高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(15)

  • 汪海游龙
    对编译有了更深的认识,另外,Gradle 官方有个 build-scan 的功能,可以生成构建期间的详细报告,其中有性能相关的统计,可以帮助分析一些耗时的 task 等。

    作者回复: 是的,profile也是可以的

    2019-02-20
    5
  • Mograine
    微信这么大的一个app,android才40人?

    作者回复: 兵不在多

    2019-02-19
    5
  • blithe
    看了很多遍,越看越回顾又看几遍,后来看一篇就直接写个总结
    2019-11-11
    1
  • ...
    看了下apply changes源码发现 其实对编译速度提升并没有帮助 主要功能是代码热部署
    2019-09-01
    1
  • 饮识止渴(Vilin)
    odex文件,oat文件什么区别?是同时存在的吗?

    作者回复: 是同一个东西,oat文件,它的格式是.odex

    2019-03-17
    1
  • Dimple
    其实做人、做事也是如此,我们经常会陷入局部最优解的困局,或者走进“思维怪圈”,这时如果能跳出路径依赖,从更高的维度重新思考、审视全局,得到的体会可能会完全不一样。----最近在搞Java的微服务,很多问题一直困扰,我就出去走走,休息下,然后回去尝试从其他路径解决,效果真的还行
    2019-06-15
  • zp
    看到有用到热修复的方法,这个基于插件化技术的方式在安卓9.0以后就用不了吧,这个怎么解决呢?
    2019-05-20
  • 🍎
    以前没了解过这块,今天算是懂了大部分原理了。厉害
    2019-04-19
  • Victory
    以前用的windows 每次编译基本要两分钟了,特别影响开发效率,现在换的mac,比以前快了,但还是觉得慢😊

    作者回复: 这就需要我们尝试去优化了

    2019-03-19
  • splm
    annotation processor遇到的问题就是,一旦修改了生成规则,所有类都需要重新解析生成再编译。如果不改,会不会依旧重新编译,没有仔细观察过。
    2019-02-26
  • splm
    1.为什么把常量替换成方法对于大项目不行?是因为方法数吗?
    2.对于annotation processor出现全量更新问题,gradle4.7的文档该如何解读?

    作者回复: 1. 因为代码太多太乱,而且很多都是历史代码
    2.可以去看看官方文章以及提交的代码

    2019-02-26
  • QuincySx
    分享 ProGuard 的用法 :http://blog.smallraw.com/index.php/category/javaProGuard/
    2019-02-20
  • xlogic
    请问作者有没有了解过 JRebel for Android,虽然现在下线了,但是去年我用的时候感觉热部署很快,不知道是啥原理?

    作者回复: 记得应该是类似热修复的原理,之前有专门研究过

    2019-02-19
  • Sc
    编译一下的时间 都可以去厕所蹲一会了。。。
    2019-02-19
  • 项目大了之后,一直受编译速度的折磨,即使换了机器,依旧还是那么慢,真的很恼火。google flutter的秒级编译速度刚开始确实让我眼前一亮,只可惜用flutter写的代码太难看了,不知道业界有什么办法能让flutter代码更加简洁一些呢?

    作者回复: 只要Flutter开发者的盘子够大,后面的很多配套项目都会成熟起来

    2019-02-19
收起评论
15
返回
顶部