平安金融科技移动技术周报(第三十五期)
@author ASCE1885的 Github 微博 CSDN 知乎
Photo by Marsel van Oosten
本期导读:本期带来 16 篇最新文章,共四大主题内容,涵盖源码解析,技术选型,实例剖析,开源框架,技术人生等等,欢迎阅读转发。
Android开发
1)深度理解Android InstantRun原理以及源码分析 @郑海波
Instant Run,它是Android Studio2.0以后新增的一个运行机制,能够显著减少你第二次及以后的构建和部署时间。简单通俗的解释就是,当你在Android Studio中改了你的代码,Instant Run可以很快的让你看到你修改的效果。而在没有Instant Run之前,你的一个小小的修改,都肯能需要几十秒甚至更长的等待才能看到修改后的效果。
2)APP淘宝,你为什么这么慢卡? @为梦拼命的攻城狮
相信很多开发者会有这种疑惑,淘宝,阿里大厂技术应该很牛逼,app性能优化应该做的很不错,为什么真正使用的时候,却感觉还是启动慢,卡呢?今天我们来探探究竟。通过这篇文章,你会了解到,反编译,性能优化相关,学会如何去分析其他的APP。本文不是黑淘宝。只是从技术方面去分析原因。
3)Android运行时Crash自动恢复框架-Recovery @zhengxiaoyong
App Crash的恢复,这个想法很早之前就有,目前有些时间就实现了一把,主要是对App运行时发生Crash后,对Activity的堆栈和数据进行恢复,或者重启应用,或者重启并清空缓存,避免因本地的数据类型或格式错误而导致App在读取时一直Crash,Debug模式还包括Crash信息的显示和保存,便于在开发、测试时查看相应CrashInfo。
4)ToyRoom-饿了么开源的Android业务流框架 @进击的小羊
大家在平时的业务开发过程中肯定遇到过这样的情况:在面向业务逻辑的编程中,一个特定的业务对象的改变可能会引起各个组件的变化,业务逻辑的复杂性也会增加模块之间的耦合。比如在订单列表页面,我们调用了一个异步网络请求去获取订单数据,当网络数据返回后,需要对数据进行处理,然后将数据保存到数据库,再通知多个tab页面刷新UI,之前我们使用EventBus来使用通知分发,但是当业务越来越多的时候,我们发现EventBus的onEvent方法维护变的不可控,因为我们不知道有多少个地方响应了这个Event,最后代码就变得难以维护,这时候我们就在想如何能把这些响应逻辑像流水线一样在一个地方铺开,先执行A,再执行B,最后执行C,一目了然,让世界重新回到我们的掌控中。
5)Android热修复技术选型——三大流派解析 @所为
2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案、阿里AndFix以及微信Tinker,它们在原理各有不同,适用场景各异,到底采用哪种方案,是开发者比较头疼的问题。本文希望通过介绍QQ空间补丁、Tinker以及基于AndFix的阿里百川HotFix技术的原理分析和横向比较,帮助开发者更深入了解热修复方案。
iOS开发
1)全面谈谈Aspects和JSPatch兼容问题 @zhao0
Aspects 和 JSPatch 是 iOS 开发中非常常见的两个库。Aspects 提供了方便简单的方法进行面向切片编程(AOP),JSPatch可以让你用 JavaScript 书写原生 iOS APP 和进行热修复。最近项目开发中需要用 JSPatch 替换方法修复一个 bug ,然而这个方法已经使用 Aspects 进行 hook 过了,那么两者同时使用会不会有问题呢?
2)如何面试iOS工程师 @bang
参加了内部面委会的一个分享,结合我自己的方式,说说怎样面试一个普通的iOS工程师。一般我倾向的考察分两个主要的部分,第一是在简历里提到的项目经历中找挖掘点,第二是基础知识考察。另外也会看情况做一些软实力的考察和性格特征的判断。
3)iOS App组件化开发实践 @曹俊
其实我们这个7人iOS开发团队并不适合组件化开发。原因是因为性价比低,需要花很多时间和精力去做这件事,但收益不一定能超过付出的成本。但是因为有2~3个星期的空档期,并不是很忙;另外是可以用在一个全新的App上,所以决定想尝试下组件化开发,如果能解决组件化开发当中的一些问题,并且有比较好的解决方案,那就继续下去,否则就放弃。
4)iOS H5容器的一些探究(一):UIWebView和WKWebView的比较和选择 @景铭巴巴
Native App和Web App都有他们的优势和劣势。我们也不能一棍子拍死说谁好谁劣。通常的经验是:对于一些比较稳当的业务,对用户体验要求较高的,我们可以选择Native开发。而对于一些业务变更比较快、处在不断试水的过程,而且不涉及调用文件系统和硬件调用的业务我们可以选择h5开发。所以说,在一款app中我们需要同时支持Native代码和h5代码。这也是我们标题所说的Native开发中需要H5容器的必要性。
React Native
1)利用 ESLint 检查代码质量 @老雷
其实很早的时候就想尝试 ESLint 了,但是很多次都是玩了一下就觉得这东西巨复杂,一执行检查就是满屏的error,简直是不堪入目,遂放弃。直到某天终于下定决心深入看了文档,才发现其实挺简单的,只是当时没有看到合适入门教程而已。我相信很多人也有着跟我一样的经历,所以希望将自己的踩坑心得记录下来,让后来者更轻易地掌握 ESLint 的使用,因为它确实是个好东西。
2)深入理解Redux:10个来自专家的Redux实践建议 @王下邀月熊_Chevalier
本文是 Redux 的实践建议,如果你的项目中也在使用的话,值得一看。
3)再谈React-Native With Redux @richardcao
有一段时间没写react-native redux相关文章了,使用中多多少少有些感悟,总结了一些,这次把它写出来。
技术人生
1)程序员的成长离不开哪些软技能? @Dev Club
软技能就是激活人资的能力,即是调动别人的资源和知识的能力以及调动自己知识进行创造性思维的能力!软技能能力值越高,处理事情的能力就越强,它是衡量一个人处理事情能力的量表!这里的资源指:知识和朋友。软技能实际上是指那些“不易看见的技能”,是一个人“激发自己潜能和通过赢得他人认可和合作放大自己的资源,以获得超越自身独立能力的更大成功的技能”的总和。
2)写一本技术书籍 @董伟明
在过去的8个多月的时间里面,我完成了一本504页的《Python Web开发实战》。本文就是写这本书的一些感悟和心得,如果你准备写一本书(无论是出版社约稿还是想放在Github开源),希望本文对你能有一些帮助。如果你准备购买本书,也希望你能看到成书背后的一些故事。
3)我的“code review”成长之路 @陈老师
“code review”已经是很多公司的常规实践,初看上去好像是浪费时间,降低工作效率,其实反之,好处大家有目共睹。它能检查代码的正确性,合理性,安全性,发现隐秘的bugs,让系统更可靠的运行。它能保证代码能有两个或以上的人熟悉,促进知识共享。它能让团队成员互为备份,互相支持,不会有SPOF。它能威慑埋雷的任何想法,杜绝邪念。它能互相学习好的代码,提高编程技能。等等。
4)谁说程序员不是潜力股?让这位世界前五名的天才程序员来颠覆你三观! @覃超
作为一名程序员,我想很多朋友都会抱怨,没时间交友娱乐,没时间找女朋友,更没时间打扮自己,于是每天穿着一件不知道从哪里翻出来的T恤坐在电脑面前,“忙碌”的工作着。我正想着如何刺激一下我的同行们,也包括我自己,然后今天刚好看见了这么一篇文章,强烈推荐给程序员单身小伙们阅读一下。
欢迎关注我们团队的技术公众号