如果想成为优秀、不担心淘汰的工程师,绝不是一味跟风新技术,今天学Kotlin、明天学Flutter,疲于奔命;而应该持续努力去完善自己的知识体系,保持一定的技术深度。

因此,本专栏希望在大家做UI、界面开发之余,分享一些Android架构方面的知识和技能。

希望且相信这些技能能够让读者真正摆脱技术焦虑,最终找到自己的方向和竞争力。

业务同学需要了解架构吗?

有的同学会问,我平常都在写业务代码、写页面、调用SDK,有必要去了解架构吗?答案很简单,业务是表,架构是里。变化万千的业务背后都是大同小异的架构。时代更迭,业务变迁,理解架构的技术人员可以处变不惊,而非疲于奔命。

因此,本人建议业务同学在繁重的业务开发之余,可以多去研究一些底层库原理,而非停留在花式调用SDK的阶段,这会让你具备更强的技术竞争力。

架构孵化于业务,服务于业务

不少公司的架构同学和业务同学都存在一种矛盾:架构与业务互相独立,导致输出的技术总是不能很好的满足业务需求,导致的结果是:架构同学有心无力,业务同学有苦难言。

实际上,真正好的架构是从业务中孵化出来的,而且能服务于更广阔的业务形态。

举几个例子大家就清楚了。

大家都知道阿里主营电商业务,而电商是强运营的,所以对于动态化有非常强的需求,也就是希望App尽可能像网页一样,能够随时更新页面内容。于是,阿里内部孵化出了Weex,通过远程开发部署js代码,即可实时更新页面内容;

另外,手淘App对于整个阿里集团的战略意义非常大,它不仅是盈利怪兽,而且是整个集团的流量入口(手淘DAU自2015年即达1.1亿)。这也就是阿里曾提出的“航母策略”:手淘如一座航母,集团内各种业务形态如飞猪、闲鱼、天猫等都可坐落在其上。于是,Atlas诞生了,所有App都可以轻松集成到手淘上,享受流量滋养。

类似的例子还有很多,比如大家熟知的微信,需要保证消息在任何复杂网络下都能有最高的到达率。因此微信自研了一套跨平台长连接方案,提出智能心跳方案、多种弱网应对策略如多级超时等,最终推出了Mars,保证了全国各种网络环境下的用户都能稳定的收发消息。

有些同学可能了解阿里15年提出的“大中台,小前台战略”,搭建集团数据中台、技术中台,帮助各种前台业务快跑前进;这样的技术架构和组织架构帮助阿里快速孵化出各种新的业务,比如18年初的淘宝特价版,据朋友了解整个App从启动到上线只用了短短一个多月的时间。今年,腾讯组织架构调整,担任CTO的张志东就提到:“没有能帮助到公司级的数据中台建设,我个人也蛮遗憾。”,自此腾讯也正式启动了“中台架构”建设。

所以说,不同的业务形态,能孵化出特有的架构。

架构是根,扎得越深,业务才越能开枝散叶。

专栏技术图谱

闲话说了不少,下面正式谈一谈本专栏会覆盖的一些技术点吧。这些技术点会基于本人日常的工作积累,同时结合各大厂开源的技术体系,(当然对于阿里闭源的会尽量规避掉,线下可以做一些技术探讨)。

下面,我把后面专栏会覆盖到的技术点列出来,当然在写作的过程中还会逐步调整。

  1. 动态化专题 由于App获客成本不断提高,动态化是近年来越来越重要的技术架构,例如React Native、小程序、快应用等都在试图让App具备实时更新、随手可得。本专题会对各厂提出的动态化方案进行分析,如JsBridge;包括小程序方案的一些实现思路,比如多进程的H5容器架构;另外,还会分析一些适用于移动平台的动态化编程语言如Lua,Javascript等。

  2. 图片专题 对于亿级App而言,图片的任何优化都对于流量、体验等具有重要意义。比如Google+ App采用 WebP 图片格式后,每天节省了 50TB数据存储空间。因此,本专题会谈一下各大厂如腾讯、FB、Google等在图片优化方面提出过哪些方案,比如WebP vs SharpP;另外也会分析一些大家用的比较多的Glide、Fresco是如何做图片缓存、如何基于Dalvik/Art不同的内存结构来优化。

  3. 省流专题 上面谈到了图片的压缩,其实节省流量是一个永恒的话题,它不仅能改善用户体验,也能帮助减少用户流量开销,节省公司成本。因此,本专题会谈一谈如何监控Android流量;有哪些常用的Diff及压缩算法,比如Tinker里自研的Diff算法 vs Google提出的google-diff vs BsDiff等;如何选用数据通信格式如json、ProtoBuf;FastJson、Jackson各自的优势等等。

  4. 网络专题 大多数业务同学对网络的认识就是OkHttp+Json解析,实际上,网络这一块还存在非常多值得研究的技术点。一个优质的App,除了在网络良好的环境下运行,更重要的是,必须在弱网、网络劫持、网络慢等复杂环境下也要良好运行,而且还得快,这也就涉及到DNS加速、网络结果缓存等。 之前大厂都在提“页面秒开”的概念,页面打开速度很大程度取决于当下的网络环境,也对于用户体验和留存有非常大的影响。这个专题我们谈谈网络相关的技术点。

  5. 监控与日志专题 对于监控和日志,多数人的印象是集成一个第三方SDK,如Fabric、Bugly等。业务同学或许对日志了解不是特别多,但实际上日志是至关重要的,尤其是在排查复杂问题时。 本专题我们谈一下如何做到日志不丢失,如何后台上报且不影响App运行,最有意思的一点:如何利用长连接等技术,实时拉取任意用户的本地详细日志

  6. 安全专题 安全专题就离多数比较远了,这里我们讲解一些常见的和业务相关的安全话题,具体后续补充。

  7. 高可用专题 后续补充

  8. GC专题 后续补充

专题计划技术点列表

1. 动态化专题

  • 如何让JavaScript与App交互
  • 如何实现“即点即用”之小程序、快应用
  • H5容器之多进程架构
  • 动态化编程之Lua
  • …等
    2. 图片专题
  • 图片压缩之WebP与腾讯SharpP的实现机制
  • 图片内存优化之Glide和Fresco原理篇
  • png jpg等常用图片格式的内存、解压速度分析
  • …等
    3. 省流专题
  • Android流量监控
  • 文件压缩 zip 7z gzip等
  • 增量更新之diff算法,案例:Tinker自研diff/patch算法
  • 图片缓存技术
  • WebView缓存优化
  • 数据传输协议对比之ProfoBuf、FastJson、Jackson
  • …等
    4. 网络专题
  • 可靠长连接的意义
  • HTTPDNS DNS劫持
  • 网络嗅探
  • Http2/Https/QUIC协议对比
  • CDN 削峰填谷
  • 如何做全局网络限流,保证业务流量高优先级
  • …等
    5. 监控与日志专题
  • mmap日志落地方式,开源项目Loganxlog等分析
  • 通过长连接动态拉取日志
  • 如果长连接断开、通过短连接兜底拉取日志
  • 日志上报,本地分片存储及后台上报策略

总结

找工作是个很辛苦的事情,而且一般周期都比较长,有时候既看个人技术,也看运气。第一次找工作,最后的结果虽然不尽如人意,不过收获远比offer大。接下来就是针对自己的不足,好好努力了。

最后为了节约大家的时间,我把我学习所用的资料和面试遇到的问题和答案都整理成了PDF文档

喜欢文章的话请关注、点赞、转发 谢谢!

把我学习所用的资料和面试遇到的问题和答案都整理成了PDF文档

喜欢文章的话请关注、点赞、转发 谢谢!

[外链图片转存中…(img-buinIRTp-1643872135807)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

Android-技术的下半场,Android开发者出路在哪相关推荐

  1. Android技术分享| 【Android 自定义View】多人视频通话控件

    [Android 自定义View]多人视频通话控件 *以上图片截自微信等待中界面 等待中界面 上图是微信多人视频通话时未接通的界面状态,可见每个人的 View 中大致需包含了以下元素. 头像 昵称 L ...

  2. Android 技术的下半场,春招我借这份PDF的复习思路

    举几个例子大家就清楚了. 大家都知道阿里主营电商业务,而电商是强运营的,所以对于动态化有非常强的需求,也就是希望 App 尽可能像网页一样,能够随时更新页面内容.于是,阿里内部孵化出了 Weex,通过 ...

  3. wine for linux android,技术|如何在 Android 上借助 Wine 来运行 Windows Apps

    Wine(一种 Linux 上的程序,不是你喝的葡萄酒)是在类 Unix 操作系统上运行 Windows 程序的一个自由开源的兼容层.创建于 1993 年,借助它你可以在 Linux 和 macOS ...

  4. android技术分享方向,android开发分享在Android中计算指南针方位/标题到位置

    在这罗盘上的箭头显示从你的位置到天房的方向( 目的地位置 ) 你可以简单的使用bearingTo,这样就可以给你从你的位置到目的地的直接angular度 Location userLoc=new Lo ...

  5. 澳洲Android技术移民,的Android Studio 2.2中本地开发移民问题

    今天我们收到了同样的错误,在一个Rajawali项目 - 也就是说,我们没有实现本地组件,但使用了一个实现了一些原生OpenGL组件的库.我想这与某个Android Studio更新有关(在该机器上, ...

  6. 2020上半年已过,疫情下互联网迎来红利期,Android技术下半场在哪?

    那么,对于工程师而言需要做什么才能存活呢?很简单,要么转行,要么提高.我相信,一个技术不错的工程师,不但无需焦虑,而且在这个时代,能够拥有稳定的职业生涯和丰厚的收入. Android技术的下半场 要说 ...

  7. android开发三大框架!Android开发者出路在哪?完整PDF

    越来越多的人在提"移动端的下半场"."Android 开发的焦虑"之类的,也有人在喊"技术天天在变,学也学不完","昨天 Kotl ...

  8. android面试自我介绍范文,2022年Android技术下半场在哪

    开头 中国互联网发展的这些年,如今90后程序员是中国程序员的主力军,互联网的热潮也让一批批00后蠢蠢欲动,尝试涌入互联网圈. 当程序员容易,当一个优秀的程序员需要不断学习,从初级程序员到高级程序员,从 ...

  9. Android技术点增长 - 收藏集 - 掘金

    学习 Android 开发过程的记录, 以及总结 - Android - 掘金 这些文章是记录我学习过的,总结出来的文章,文章内容难免有错误以及做笔记的过程中忘了备注标注来源,如果侵犯了作者了权利,请 ...

  10. Android技术经理+资深工程师+研发工程师-杭州

    Android技术经理 岗位职责: 1.负责手机端的技术设计和客户端的日常技术开发管理工作: 2.要有实际的项目开发经验,涉及手机开发的各个方面,具备整体设计能力: 3.能对后端开发建议和参与设计能力 ...

最新文章

  1. : error c2062: 意外的类型“int”_Go 命令行解析 flag 包之扩展新类型
  2. TikTok又添劲敌 Meta元宇宙携Reels宣战
  3. java url getfile_java url构成及get属性方法解释
  4. 技术人写作和写代码一样重要
  5. Transformer组件很重要Attention is all you need
  6. java 自定义异常的回顾
  7. c语言中post协议,c/c++的http协议的get和post方法
  8. React 16 加载性能优化指南
  9. gentoo java_gentoo安装java开发环境
  10. c++ thread(2.1)---join()
  11. 利用openmp实现矩阵相乘_矩阵快速幂
  12. 联想笔记本键盘亮屏幕不亮_笔记本电脑进入睡眠状态后无法通过鼠标或键盘来唤醒屏幕怎么解决...
  13. 笔记本绝密内幕 你不知道的代工秘密
  14. java3d载入obj_Threejs大型obj文件的秒加载实现
  15. BI神器Power Query(7)-- PQ从文本文件导入数据(1/2)
  16. 洛谷P1719 最大加权矩形
  17. win10+vs2017配置mpi环境的记录(已成功)
  18. android 模拟输入,Android开发中如何模拟输入
  19. How Tomcat Works, A Guide to Developing Your Own Java Servlet Container
  20. 爬虫修正:裁判文书网20200901更新增加登录系统

热门文章

  1. 计算nurbs曲率NURBS曲线的曲率计算
  2. 2017华为codecraft 《大视频时代布局》
  3. VSIX(VSCode插件)安装方法
  4. Microsoft Hololens开发上手(2)
  5. 先导式比例插装式减压阀控制器
  6. Python TypeError: Object of type ‘Decimal‘ is not JSON serializable 类型错误 无法json
  7. 美团点评会成为阿里巴巴未来最大的竞争对手吗?
  8. 【精选】各种节日祝福(C语言,可修改),Easyx图形库应用+源代码分享
  9. 统计完全二叉树的节点数-Java
  10. 当决定要做一件事的时候