Android开发高手课 / 由表及里,给你的App“把把脉”
张绍文
前微信高级工程师,Tinker负责人
 
  • 课程目录
  • 课程介绍
  • 开篇词 | 焦虑的移动开发者该如何破局?

    不要把时间浪费在纠结问题上,而是应该放在解决问题上。“王者荣耀”“吃鸡”并不能解决我们的焦虑,拥抱变化,才能拥有未来。

  • 导读 | 如何打造高质量的应用?

    既然打造一款高质量的应用那么困难,我们可以先从哪里入手做些什么呢?

  • 01 | 崩溃优化(上):关于“崩溃”那些事儿

    今天我会从Android的两种崩溃类型谈起,再和你进一步讨论到底该怎样客观地衡量崩溃这个指标,以及又该如何看待和崩溃相关的稳定性。

  • 02 | 崩溃优化(下):应用崩溃了,你应该如何去分析?

    解决崩溃跟破案一样需要经验,我们分析的问题越多越熟练,定位问题就会越快越准。

  • 03 | 内存优化(上):4GB内存时代,再谈内存优化

    如今4GB内存的手机都变成了主流。那内存优化是不是变得不重要了?如今有哪些技巧已经淘汰,而我们又要升级什么技能呢?

  • 04 | 内存优化(下):内存优化这件事,应该从哪里着手?

    在掌握内存相关的背景知识后,下一步你肯定想着手开始优化内存的问题了。

  • 05 | 卡顿优化(上):你要掌握的卡顿分析方法

    那到底该如何定义卡顿呢?在本地有哪些工具可以帮助我们更好地发现和排查问题呢?这些工具之间的差异又是什么呢?

  • 06 | 卡顿优化(下):如何监控应用卡顿?

    今天我们学习了卡顿监控的几种方法。随着技术的深入,我们发现了旧方案的一些缺点,通过不断地迭代和演进,寻找更好的方案。

  • 练习Sample跑起来 | 热点问题答疑第1期

    今天我就针对第1期~第4期中,同学们集中遇到的问题做一期答疑。

  • 06补充篇 | 卡顿优化:卡顿现场与卡顿分析

    我们如何通过收集更加丰富的卡顿现场信息,进一步定位并排查问题呢?

  • 07 | 启动优化(上):从启动过程看启动速度优化

    启动过程究竟会出现哪些问题?我们应该怎么去优化和监控应用的启动速度呢?今天我们一起来看看这些问题该如何解决。

  • 08 | 启动优化(下):优化启动速度的进阶方法

    我们的应用启动是不是真的已经做到了极致?如何保证启动优化成果是长期有效的?

  • Android JVM TI机制详解(内含福利彩蛋)

    JVM TI机制究竟是什么?它为什么如此的强大?怎么样将它应用到我们的工作中?今天我们一起来解开它神秘的面纱。

  • 09 | I/O优化(上):开发工程师必备的I/O优化知识

    在专栏前面卡顿和启动优化里,我也经常提到I/O优化。可能很多同学觉得I/O优化不就是不在主线程读写大文件吗,真的只有这么简单吗?

  • 练习Sample跑起来 | 热点问题答疑第2期

    你好,我是孙鹏飞。今天我们基于专栏第5期的练习Sample以及热点问题,我来给你做答疑。

  • 10 | I/O优化(中):不同I/O方式的使用场景是什么?

    对于服务器开发者来说,可以根据需要选择合适的文件系统和磁盘类型,也可以根据需要调整内核参数。但对于移动开发者来说,我们看起来好像做不了什么I/O方面的优化?

  • 11 | I/O优化(下):如何监控线上I/O操作?

    但是在实际应用中,你知道有哪些I/O操作是不合理的吗?我们应该如何发现代码中不合理的I/O操作呢?或者更进一步,我们能否在线上持续监控应用程序中I/O的使用呢?

  • 练习Sample跑起来 | 热点问题答疑第3期

    你好,我是孙鹏飞。又到了答疑的时间,今天我将围绕卡顿优化这个主题,和你探讨一下专栏第6期和补充篇的两个Sample的实现。

  • 12 | 存储优化(上):常见的数据存储方法有哪些?

    今天我来结合Android系统的一些特性,讲讲开发过程中常见存储方法的优缺点,希望可以帮你在日常工作中如何做出更好的选择。

  • 13 | 存储优化(中):如何优化数据存储?

    我们不一定有精力去“创造”一种数据序列化的格式,但我们要了解Android常用的序列化方法如何进行选择。

  • 专栏学得苦?可能是方法没找对

    同学们好,很高兴可以在《Android开发高手课》和你分享专栏里同学们自己的故事。

  • 14 | 存储优化(下):数据库SQLite的使用和优化

    对于大数据的存储场景,我们需要考虑稳定性、性能和可扩展性,这个时候就要轮到今天的“主角”数据库登场了。

  • 15 | 网络优化(上):移动开发工程师必备的网络优化知识

    今天我们就再接再厉,继续学习系统中另外一种常见的I/O——网络I/O。

  • 专栏学得苦?可能你还需要一份配套学习书单

    今天我结合专栏的编排,给你推荐几本我看过并且对我帮助很大的图书。

  • 16 | 网络优化(中):复杂多变的移动网络该如何优化?

    今天我们一起来看一下,如何让我们的应用在各种的网络条件下都能“快人一步”。

  • 17 | 网络优化(下):大数据下网络该如何监控?

    想要解决这些问题离不开高质量的网络,而高质量的网络又离不开强大的监控。今天我们就一起来看看网络该如何监控。

  • 练习Sample跑起来 | 热点问题答疑第4期

    今天我们回到专栏第7期和第8期,来看看课后练习Sample的运行需要注意哪些问题。

  • 18 | 耗电优化(上):从电量优化的演进看耗电分析

    电池技术有哪些重要的评判标准?电池技术这些年究竟又有哪些进展?下面我们一起来聊聊手机电池的知识。

  • 19 | 耗电优化(下):耗电的优化方法与线上监控

    耗电优化究竟需要做哪些工作?我们如何快速定位代码中的不合理调用,并且持续监控应用的耗电情况呢?

  • Native下如何获取调用栈?

    当我们在调试Native崩溃或者在做profiling的时候是十分依赖backtrace的,高质量的backtrace可以大大减少我们修复崩溃的时间。

  • 20 | UI 优化(上):UI 渲染的几个关键概念

    所谓的UI优化,一个是效率的提升;另一个是性能的提升,在正确实现复杂、炫酷的UI设计的同时,需要保证用户有流畅的体验。

  • 21 | UI 优化(下):如何优化 UI 渲染?

    如何让我们的UI渲染达到60 fps?有哪些方法可以帮助我们优化UI渲染性能?

  • 22 | 包体积优化(上):如何减少安装包大小?

    我们经常会想,现在WiFi这么普遍了,而且5G都要来了,包体积优化究竟还有没有意义?它对用户和应用的价值在哪里?

  • 23 | 包体积优化(下):资源优化的进阶实践

    上一期我们聊了Dex与Native Library的优化,是不是还有点意犹未尽的感觉呢?那安装包还有哪些可以优化的地方呢?

  • 24 | 想成为Android高手,你需要先搞定这三个问题

    专栏难?工作用不上?怎样才能学下去?今天我们一次解决这三个问题!

  • 25 | 如何提升组织与个人的研发效能?

    今天我们就一起来开启新的征程,从组织和个人研发效能的角度,重新帮你审视整个应用交付的过程。

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

    那应该怎么样优化编译速度呢?微信、Google、Facebook等国内外大厂都做了哪些努力呢?除了编译速度之外,关于编译你还需要了解哪些知识呢?

  • 27 | 编译插桩的三种方法:AspectJ、ASM、ReDex

    只要简单回顾一下前面课程的内容你就会发现,在启动耗时分析、网络监控、耗电监控中已经不止一次用到编译插桩的技术了。那什么是编译插桩呢?

  • 练习Sample跑起来 | ASM插桩强化练习

    专栏上一期,绍文讲了编译插桩的三种方法:AspectJ、ASM、ReDex,以及它们的应用场景。学完以后你是不是有些动心,想赶快把它们应用到实际工作中去?

  • 28 | 大数据与AI,如何高效地测试?

    在越来越短的交付时间里,如何保障产品的质量,怎样高效地测试呢?我们研发模式在不断地变化,测试的定位又有哪些改变,而未来的测试又会发展成什么样的形态呢?

  • 练习Sample跑起来 | 唯鹿同学的练习手记 第1辑

    作业太难?没时间做?给你一份“学霸”的作业“参考参考”

  • 29 | 从每月到每天,如何给版本发布提速?

    灰度放量、A/B测试,真的起到作用了吗?提高版本发布速度也要兼顾效率和质量,如何才能“提速保质”呢?

  • 练习Sample跑起来 | 唯鹿同学的练习手记 第2辑

    前面几期练习太难?后面的Sample都跑起来了吗?参考完同学的,赶紧把自己的作业补上吧。

  • 30 | 数据评估(上):如何实现高可用的上报组件?

    “又快又准”的数据评估,是反映业务真实情况,作出正确产品决策的关键。今天我们一起来打造一款跨平台、高可用的数据上报组件。

  • 31 | 数据评估(下):什么是大数据平台?

    有了完善的高可用的上报组件就够了吗?快看看大厂是如何打造一站式埋点平台和大数据平台的吧。

  • 聊聊Framework的学习方法

    我是陆晓明,今天我要跟你分享的是Framework的学习和调试的方法。

  • 32 | 线上疑难问题该如何排查和跟踪?

    “95%以上的崩溃都能解决或者规避,大部分的系统崩溃也是如此”“只要你能在本地复现,我就能解决”,真正的线上疑难问题可不是靠吹能解决的。

  • 33 | 做一名有高度的移动开发工程师

    成为“开发高手”还不够?如何才能成为纵向深入、横向扩展的T型人才?如何提升个人的专注力和效率?如何看待个人发展和公司平台的关系?

  • Android工程师的“面试指南”

    “金三银四”想跳槽?想加薪?Android工程师的“面试指南”了解一下。

  • 34 | 聊聊重构:优秀的架构都是演进而来的

    亿级产品的架构真那么高大上吗?Android系统的架构是如何演进的?我还无法从事大型项目的架构设计,此时该如何积累架构方面的经验呢?

  • 35 | Native Hook 技术,天使还是魔鬼?

    GOT/PLT Hook、Trap Hook、Inline Hook,今天我们“一网打尽”。

  • 程序员修炼之路 | 设计能力的提升途径

    一大波程序员在艰辛修炼路上的心声:如何才能快速提升自己的设计能力?

  • 练习Sample跑起来 | 唯鹿同学的练习手记 第3辑

    学霸又交作业了,快看看22、27期和ASM的练习Sample是如何跑起来的吧。

  • 36 | 跨平台开发的现状与应用

    H5与Native的现状是怎样的呢?RN和Weex方案有哪些优势,又存在什么问题?小程序是不是真的可以一统江湖?焦虑的原生开发又应该如何在这个潮流之下谋发展呢?

  • 37 | 移动开发新大陆:工作三年半,移动开发转型手游开发

    无论移动的未来如何发展,今天我们所熟悉的Android平台知识以及学习这些知识所沉淀下来的能力和方法,都是最宝贵的财富。

  • 38 | 移动开发新大陆:Android音视频开发

    不管作为开发者还是用户,现在我们每天都会接触到各种各样的短视频、直播类的App,与之相关的音视频方向的开发也变得越来越重要。

  • 39 | 移动开发新大陆: 边缘智能计算的趋势

    我在移动端机器学习的项目中,接触了不少安卓开发的同学,也看到团队中不少安卓开发同学展现出的机器学习技术的开发能力,我也在思考AI和安卓开发可以相结合的点。

  • 40 | 动态化实践,如何选择适合自己的方案?

    相比跨平台能力,国内对大前端的动态化能力更加偏执。这是为什么呢?

  • 41 | 聊聊Flutter,面对层出不穷的新技术该如何跟进?

    Flutter在保持原生性能的前提下实现了跨平台开发,而且更是成为Google下一代操作系统的UI框架,为移动技术的未来发展提供了非常大的想象空间。

  • 42 | Android开发高手课学习心得

    “Android开发高手课”接近尾声,作为学习委员,今天我来从一个学习者的角度,对专栏做一个总结。

  • 结束语 | 移动开发的今天和明天

    不知不觉,“Android开发高手课”上线更新到现在,已经陪伴了大家140多天,转眼间到了不得不说“再见”的时候。

近十几年来,随着以iOS和Android系统为代表的智能手机的普及与发展,互联网行业早已进入“移动”的时代。但是如今的“风口”已经从移动转向AI,整个移动互联网行业正处于增量下降、存量厮杀的阶段。面对技术变革、前景不明、竞争激烈的现状,移动开发者们都感到了焦虑与迷茫。在这个大环境下,行业和企业对中高级移动开发工程师的要求越来越高,而用户对产品质量和体验的要求也越来越高。

作为一名移动开发者,我们该如何破局呢?

  • 在打造高质量应用的过程中,一定会遇到的崩溃、内存、卡顿等常见问题,有更好的解决思路吗?

  • 在应用开发的各个阶段,如何提高效率,真正做到技术赋能业务?

  • 作为移动开发者,我们还需要关心移动开发里面的架构设计吗?

“Android开发高手课”是一门为Android开发者量身定制的进阶课程。专栏围绕打造高质量应用、实现高效开发和架构演进这三个部分,不仅包含图文、音频的教学,还有作者精心设计的练习Sample,帮助你快速掌握解决复杂问题的思路和方法,并能结合课后实践切实提升开发能力(注:专栏内容60%是Android相关的,40%是可以跨平台的)。

张绍文,前微信高级工程师,负责微信的APM质量平台和DevOps的建设。作为腾讯GitHub首个开源项目Tinker的负责人,致力于推动技术的分享与开放,建立并运营微信公众号WeMobileDev。

模块一:高质量开发

专栏挑选了崩溃、内存、卡顿、启动、I/O、存储、网络、耗电、UI、安装包体积等常见复杂问题,全面梳理打造高质量应用和性能优化的技巧与解决方案。

模块二:高效开发

在编译CI、测试、灰度和发布阶段,探讨跨平台开发和动态部署如何提升效率,以及开发工程师要掌握的数据、运营等知识。

模块三:架构演进

想要掌握复杂的技术,必须要理解其原理和架构。本模块着眼于架构演进和选型,希望帮助个人和团队少走弯路。

你觉得怎么样?期待您评价: