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开发高手课
登录|注册

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

张绍文 2018-11-29
今年年初,我去上海参加一个移动技术会议,问了很多开发者最近在忙啥。令我非常惊讶的是,大家讲的最多的还是用户体验和应用质量。特别是出海东南亚的同学,面对一堆 512MB 内存的设备、无处不在的弱网络流下了无助的眼泪。
除了内存优化、弱网络优化,想做一款高质量的应用还远远不止这些。一方面,我们面对的环境越来越复杂。过去的 iOS 开发者可能做梦也想不到,现在也要开始适配屏幕和双卡双待了,更不用说 Android 那多如繁星的机型、厂家和系统。如果你的应用也要出海,那么还要面对几十个国家不同的语言、环境。
另一方面,我们的代码跟业务也越来越复杂了。先不说大量“年久失修”的历史代码,业务越来越复杂,如何管理好几十上百个模块?还要面对 React Native、Flutter、TensorFlow 等各种语言跟框架堆积在一起的情况,再加上复杂的环境和庞大的系统,想想做一款高质量的应用真的不容易。

从应用交付的流程说起

既然打造一款高质量的应用那么困难,我们可以先从哪里入手做些什么呢?我的方法是把应用当成一件商品,想象一下商品在流水线生产的过程,那么怎样在每个步骤做好“质检”呢?这就要从应用交付的流程说起。
在我看来,一个应用至少会经过开发、编译 CI、测试、灰度和发布这几个阶段。每个阶段需要关注什么问题呢?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Android开发高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(371)

  • 孙鹏飞 置顶
    大家好,我叫孙鹏飞,是这个专栏的“学习委员”,工作时间快6年,在职业生涯中走了很多的弯路,一直以来大多都靠自己摸索和兴趣,以及或多或少的知识焦虑感,有幸认识很多高手,从中学习到很多东西,其实获得的更多是思考方式和获取信息的来源以及技术盲点,深感自身不足,还在学习中。不善言谈,小开发一枚。希望这门课程可以让大家有所获得。

    作者回复: 谢谢跟辛苦鹏飞了,大家一起努力学习。

    2018-11-29
    254
  • 程晓擘
    6年android开发的妹子一枚,报名的原因是,知识面比较窄,学习的不深入,希望有所收获。
    2018-11-29
    119
  • x-ray
    刚入坑的妹子一枚,大家的赞在哪里
    2018-11-29
    71
  • itdream
    开发两年的android 妹子,一直游走在小公司,一个人独立开发,总想着要约束自己规范,做好性能优化,以及更深入的研究底层,但是一个人去做这些的时候,总是做着做着就不了了之了,感觉现在学习太片面,不够深入,希望在接下来的时间,能够提升自己,希望自己更深入的去学习,探究,提高自己能力,加油💪

    作者回复: 加油

    2018-11-29
    62
  • 黄新宇
    16年开始年初开始安卓开发,第一家公司呆了不到半年倒闭了,现在还在第二家公司,这2年时间接触了很多,有ffmpeg编解码音视频,opengl实现鱼眼摄像头视频图片展开,蓝牙通信,soket通信,基于p2p的视频直播。最新的项目也用到了kotlin,mvp+rxjava+retrofit+dagger,组件化。一直在追新的东西,怕自己落后了。但是前段有些迷茫了,因为这些技术我都还停留在用的阶段,意识到这点后我就打算先去系统的了解一下音视频的解码这一块,把雷神的博客关于音视频的翻了一遍,真是写的太好了,感谢雷神!!后来随着公司的项目进展,音视频这块暂时用不到了,又开始了一个车机项目,这个项目涉及到一些较底层的方面,由于这个原因我买了《安卓源码情景分析》来加深对安卓系统的理解,但是看了这本书后觉得自己的基础还是差了些,好多地方看的云里雾里,进度缓慢。后来也是看有的同学转做java了,想想安卓现在不火了,音视频直播也不在风头了,又买了一些java的和区块链的课程,每天加班完回来看看视频,学了html,js,css, servelet,那段时间真的很忙,公司也很忙,导致这个java的学习计划又搁浅了。然后就是现在了,这段时间没那么忙了,闲下来时无聊就和同事一起玩起了王者荣耀(看了老师上一篇文章后当场卸载了),但是总有一种为了消磨时间才玩游戏的感觉,并没有觉得很好玩,这可能就是焦虑和不安吧。这两天又抓起了《安卓源码情景分析》,这次打算老老实实的啃一遍了,顺便巩固一下c++,同时买了《数据结构与算法分析java描述版》,《计算机操作系统第四版》,我不是科班出身的,之前也觉得数据结构和操作系统没什么用,但是随着开发经验的增长,想要突破现有的瓶颈,我发现这些我之前没有学过的课还是必不可少的,同时我也希望能像科班出身的同学们一样打好基础,只有打好了基础才有更高的可能性,为了这点我会不断地努力,同时希望张老师能帮我指点迷津,让我接下来的路走的多些踏实,少些不安和焦虑,谢谢!
    2018-11-30
    50
  • 小奇
    毕业8年,做过2年JavaWeb,做过2年嵌入式,做过4年Android应用开发。7月从腾讯裸辞,原因是看不到自己的成长,应该是没有用心。太多的时间和精力都放在了业务上。一直被业务追着赶着,突然间开始迷茫,发现自己欠下了太多的债。也时常思考,怎样算是一个合格的程序员? 有时候知道的太多也是一种痛苦,建立自己的一套知识体系,是一个漫长的过程。年限并不能代表一个人的能力的强弱。有时候年限反而成为了弱势的标志。如果一开始能够在某个领域钻研,建立自己的技术壁垒,或许今天也不会这么痛苦。希望时间还来得及,希望自己还能够坚持。

    分享下一个书单:
    ####面试
    《剑指Offer》
    《程序员面试金典》
    ####应用
    《第一行代码 Android》
    《高级Android开发强化实战》
    《Android技术内幕:应用卷》
    ####Framework
    《深入理解Java虚拟机--JVM高级特性与最佳实践》
    《深入解析Android虚拟机》
    《深入理解Android 卷I》
    《Android技术内幕:系统卷》
    《Android系统源码情景分析》
    《老罗的Android之旅》 https://www.kancloud.cn/alex_wsc/androids/401771
    ####安全
    《Android应用安全防护和逆向分析》
    ####性能
    《Android移动性能分析》
    《Android性能优化最佳实践》
    ####并发编程
    《Java并发编程的艺术》
    ####架构师
    《APP架构师实践指南》
    ####组件化
    《Android插件化开发指南》
    《深入探索Android热修复技术原理》
    ####Native
    《Android C++高级编程:使用NDK》
    《FFmpeg从入门到精通》
    《音视频开发进阶指南:基于Android与IOS平台的实践》
    《OpenCV Android开发实战》
    ####Android 驱动开发
    《Android系统移植和驱动开发》
    《Android驱动开发权威指南》
    ####网络
    《图解HTTP》
    《图解TCP/IP》
    ####设计模式
    《Head First 设计模式》
    《图解设计模式》
    2018-12-03
    1
    27
  • 余涛
    5年Android开发了,感觉有些迷茫。
    认真思考下迷茫的原因,主要是对自己的不自信,那又为何不自信呢:积累不多。
    平常遇到问题,可能第一时间去百度谷歌搜一番,咦,这种方法也许能解决我现在的问题,往往问题解决了就觉得了事了,很少去深层次的思考问题,总结问题,将它作为自己的一个积累。
    另外一个就是很少去主动有计划的学习。即使学习了,也会东学学西学学,这个学不了几天又去学另一个。学习计划不够明确,不能够静下心来。
    关注这个专栏,希望自己能养成良好的习惯,提高自己的Android技能,变得更加自信。加油

    作者回复: 优势都是慢慢积累的,所以还是需要比别人多走一步,多思考一些。
    希望我们可以通过这个专栏,一起学习

    2018-11-29
    23
  • 叨叨叨
    4年安卓开发妹纸,很尴尬的是,其中休了六个月产假,怀孕修养了大半年。但是,现在孩子2岁了,我也更用心学习起来了,感谢专栏作者。期待与大家一起学习!
    2018-11-30
    19
  • 安威洋
    工作六年,Android开发从15年3月开始,到现在快四年的时间,二线城市的小公司,中间还有一段时间被拉去坐Javaweb与JS前端,算是3年的Android开发经验吧,现在公司里面只有我一个Android开发人员。
    从今年的11月份开始感觉有一种很焦虑的感觉,主要的原因就是小公司里面的技术交流太少,随着移动开发的遇冷,公司也没有扩大移动团队的计划,个人感觉遇到了巨大的瓶颈,同时也倍感孤独与凄凉。

    参加这门课程主要的目的是希望能够拓宽自己在移动开发方面的视野,帮助自己突破目前的瓶颈,同时也希望能够找到能够一起交流互相学习的朋友,缓解自己的孤独与凄凉。

    作者回复: 找到志同道合的朋友一起学习效果的确会更好

    2018-11-29
    17
  • YOUNG
    奶爸一名,二线城市,三年经验,四家公司!
    2018-11-29
    14
  • 六号先生117
    乱入一枚三年iOS程序猿,可以拓宽眼界和编程的边界。

    作者回复: io、网络、架构这些都是移动开发的基本素养,专栏大概有一半知识可以跨平台

    2018-11-29
    14
  • 小情绪
    工作:
    5年多的工作经验,一只从事Android应用开发,平时除了业务迭代,就是自我学习。

    学习:
    今年跟着罗升阳的博客学习了一遍android源码,在极客时间已学习的有:朱赟的技术管理,java核心技术36讲,硅谷产品实战36讲。正在学习的有:数据结构与算法之美,Android开发高手课。

    具体问题:
    聊聊前段时间项目中遇到的一个bug:主页面是一个Activity和4个fragment,
    使用加载方式一:
    使用FragmentTransaction add添加,且在点击的时候用show,hide操作。
    使用加载方式二:
    前面的方式都没变,但是在每次show,hide之后调用了FragmentManager.executePendingTransactions.
    方式一换成方式二之后,在某种场景下,fragment中的View会NullPointerException,因为bug是线上报出来的,虽然是偶发,但是因为用户比较多,所以总量很大,最后不能不将方式修改回去,
    虽然问题解决了,但是最终的原因始终没有找到,当然我也找了好几天,试了好几天,源码也看了,也debug了,但始终不知道原因是什么,如果大家有知道的,还望赐教。

    困惑:
    我的困惑应该跟大部分人都一样,Android应用开发者该掌握那些知识,尤其是方向,因为我们更多的担心不是现在,而是未来。

    期望:
    希望在这里可以找到一些方向,至少开阔眼界。

    作者回复: 专栏会有两章专门讲到崩溃相关的解决方法,希望对你有帮助。

    2018-11-29
    13
  • h波
    Android 开发了两年半了,一直都是独立开发,遇到问题百度谷歌,身边没有人带路,一直靠自己摸索。也在一直写业务代码,总觉得差了点什么。觉得自己就是停留在会用工具的表层上,不了解深层原理,出现问题不会分析,只依赖搜索引擎,是时候提高一下了
    2018-11-29
    10
  • lee
    10年开始做android,经历了到处抢人到现在的市场成熟,带团队,也面试开发人员。人到中年,感觉安卓的路不好走了,年初学了区块链,转行面临低薪水,辗转反侧,还是想在安卓领域钻研更深。希望能多讲些大厂的系统的实现方法,比如apm的各个模块都实现什么功能,有没有来源的替代。
    2018-11-29
    9
  • 周迷奇
    14年销售转行学习安卓开发,从纯做业务的小白一步步成长到带领小团队,逐渐接触到性能优化,厂商适配工作,内存,卡顿,耗电等,平常会看一些技术书籍,持续关注学习技术博客,偶尔自己写博客,工作之余在学习NDK,架构,组件化,热更新等安卓进阶知识,也保持对kotlin flutter AI等新技术关注实践,由于非科班出身,可能以实践解决问题居多,多数时间知其然不知其所以然,较少时间来提升对系统运行原理,通信机制,底层架构,数据结构,算法等知识的系统学习,自己核心竞争力不强,感觉遇到一些瓶颈想突破,能有机会学习大厂大神实操经验倍感珍惜,希望离一线大公司技术能力的差距小一点,希望通过专栏学习到提升自己技术核心的方法,也能增加点跳槽加薪的筹码,能有机会进去像BAT 这样的一线互联网公司最好啦!!给自己加油打气!!!

    作者回复: 非常了不起,有时候我们只是差一个平台和机会

    2018-11-30
    8
  • 永远年轻
    Android 开发三年,在目前公司经历了起码四个 0 到 1 的开发项目(基本就搁置),但因为大部分都是 2B 项目,用户量上并没有很多,没有系统的优化经验。
    现在一个人负责公司主项目 Android 端的维护迭代,几十万用户的量级,没有经历过这个项目的 0 到 1。(偶尔还有其他项目的需求)
    目前有几个棘手的地方:
    1、项目框架老旧,耦合度很高,业务复杂,角色复杂,维护成本高;
    2、由于项目熟悉度不高,用户反馈 BUG 的流程格式不规范,导致排错定位困难;
    3、想花时间重构代码,一是怕能力不足,二是人力不足。
    2018-11-29
    8
  • 一马行千里
    带着问题来的,我们的应用的用户都是户外作业人员,需要能在后台运行时,不被系统杀掉,还要在后台能稳定运行。
    现在不同型号的手机都有专门的设置,包括后台运行、允许高耗电等设置。但是开始这些权限后,系统还是会把应用杀掉。
    像这种需求,能否做到后台稳定运行。并且稳定获取地位呢?
    感谢!

    作者回复: 在高版本的系统,保活越来越难。如果是用户感知的情况,建议指定前台进程和引导用户加白。

    当然程序本身的稳定性和占用的资源也会有关系

    2018-11-29
    8
  • messishow
    帝都某团Android开发一枚,先说说自己前段时间做性能优化的感想。收益方面,某核心流程页面加载时间90分位数减少了35%,FPS的5分位数提高了60%,最重要的业务收益是订单转化率提升了千分之二。性能优化对用户体验提升的重要性不言而喻,前期通过整体重构解决了相对容易处理的过度绘制、item复用、网络请求时机等问题,后面希望能在向大神的学习中开阔一些优化的新思路和视野。
    2018-11-30
    7
  • 王坤林
    自己15年毕业,毕业前有半年的实习,我从实习到现在一直从事安卓开发,期间有一年做过framework以及系统应用开发,现在感觉自己到了瓶颈,想去大公司证实自己,但面试一直碰壁,大大打消了我的积极心。目前在一个小公司,基本一直做业务开发,感觉技术沉淀比较少,发现面试没有拿得出手的东西,并且就目前的大环境来看,内心也有些迷茫,不知道接下来该怎么做。
    2018-11-29
    7
  • wuzheng
    12年开始接触Android开发,一直在在外包公司呆了6年时间,9月份跳到了现在的公司,做自己的产品,刚来的第一个月,优化了一些内存大小,安装包大小,觉得性能优化做的还差很多,希望学习此专利能够深入学习性能优化.
    2018-11-29
    7
收起评论
99+
返回
顶部