平安金融科技移动技术周报(第二十五期)
本期导读:本期原创专题继续带来 React Native 系列教程第三弹;Android 篇带来比较丰富,既有源码解析,也有基础知识的沉淀,还带来微信的热补丁实践;iOS 篇带来两篇对 OC 语言的研究,以及 iOS 开发趋势的思考等文章;React Native 篇本周干货较少;技术纵横主要带来一些方法论相关的文章,推荐都好好读一读。
原创专题
1)我的 React Native 技能树点亮计划 の 代码风格统一工具 EditorConfig @ASCE1885
在本系列前面一篇文章《React Native 开发 IDE 选型和配置》1中我们介绍了 React Native 开发中可能用到的五款 IDE,以及如何配置以正常显示 React Native 语法和实现代码的智能提醒。在实际项目开发中,关于 IDE 或者说工程的配置远不止前文所介绍的,特别是在团队开发中,还有很多的公共配置需要制定,其中代码风格统一工具 EditorConfig 和静态代码检查工具 ESLint 是必不可少的。限于篇幅,本文先来介绍 EditorConfig,后面再起一篇文章专门来介绍 ESLint。
Android开发
1)灵活且强大的RecyclerViewAdapter源码分析 @陈宇明
相信大家RecyclerView应该不会陌生,大多数开发者应该都使用上它了,它也是google推荐替换ListView的控件,但是用过它的同学应该都知道它在某些方面并没有ListView使用起来方便,需要我们额外的编写代码,今天就给大家介绍一个Github上面的一个开源库,有了它让你使用RecyclerView的时候,和ListView一样的好用!
2)Android Studio插件整理 @ydmmocoo
现在Android的开发者基本上都使用Android Studio进行开发(如果你还在使用eclipse那也行,毕竟你乐意怎么样都行)。使用好Android Studio插件能大量的减少我们的工作量。
3)ThreadLocal在Android消息机制中的作用 @alighters
提及Android的消息机制,相信这是Android开发者非常熟悉,并且相当基础的一个知识点了。那这里还有什么需要讲的呢?这里,先抛出一个问题。
4)拆轮子系列:拆 Retrofit @piasy
安卓开发领域,很多重要的问题都有了很好的开源解决方案,例如网络请求 OkHttp + Retrofit 简直就是不二之选。“我们不重复造轮子不表示我们不需要知道轮子该怎么造及如何更好的造!”,在用了这些好轮子将近两年之后,现在是时候拆开轮子一探究竟了。本文基于 Retrofit 截至 2016.6.23 的最新源码对其进行了详细分析。
5)微信Android热补丁实践演进之路 @shwenzhang
继插件化后,热补丁技术在2015年开始爆发,目前已经是非常热门的Android开发技术。其中比较著名的有淘宝的Dexposed、支付宝的AndFix以及Qzone的超级热补丁方案。微信对热补丁技术的研究并不算早,大约开始于2015年6月。经过研究与尝试现有的各个方案,我们发现它们都有着自身的一些局限性。微信最终采用不同于它们的技术方案,走出了自己的实践演进之路。
6)十分钟理解Gradle @absfree
简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建。有些同学可能会有疑问:”我用AS不记得给Gradle指定过什么构建规则呀,最后不还是能搞出来个apk。“ 实际上,app的构建过程是大同小异的,有一些过程是”通用“的,也就是每个app的构建都要经历一些公共步骤。因此,在我们在创建工程时,Android Studio自动帮我们生成了一些通用构建规则,很多时候我们甚至完全不用修改这些规则就能完成我们app的构建。
7)Android Lint工作原理剖析 @ljfxyj2008
Android Studio 2.0 Stable版本已经于2016年4月7日正式发布。除了Instant Run让人眼前一亮,更让人惊喜的是,官方已经悄然把自定义Lint的检查与IDE整合起来了。在此之前,自定义Lint规则只能通过在终端中执行gradle任务来运行,然后生成报告文件。
iOS开发
1)iOS 10 Music 架构解析 @糖炒小虾
众所周知,iOS 10 发布了。然而可能大家并不知道,iOS 10 的刷机包并没有加密。我们可以通过解压后挂载 dmg 镜像的方法,装载 iOS 系统分区。在这里,我们能做什么呢?作为一个 iOS / Android 双料开发者,我非常喜欢围观 Android 系统自带的 app 源码,毕竟那是 Google 的工程师认为的最佳实践。而这次我们也能近距离的围观一下 iOS 内置的书写方式,于是这里我们选择了 Music.app 来做小白鼠。
2)alloc、init你弄懂50%了吗? @iosxxoo
这是一篇我记录对alloc、init分析思考的笔记。如果读者想看懂我的第二个思考,可能需要您至少了解内存的分段分页管理,如果您对其一点都不知道,可以先看这篇软文简单了解一下。另外很重要的一点是,请先思考。
3)iOS开发——深拷贝与浅拷贝详解 @陈宇峰Coder
深拷贝和浅拷贝这个问题在面试中常常被问到,而在实际开发中,只要稍有不慎,就会在这里出现问题。尤其对于初学者来说,我们有必要来好好研究下这个概念。
4)安全模式:天猫App启动保护实践 @胖纸
在App热修复中有一个特殊情况,就是应用在启动阶段crash,根本启动不了,热修复就难以奏效,不过这种情况也能解决。前段时间微信读书分享了他们的启动保护方案,现在天猫也分享了他们的实践,叫做安全模式。本文介绍了天猫安全模式的由来、设计思路、原理和易用性考量等等。
5)2016:iOS开发趋势思考 @没故事的卓同学
编程神作《代码大全》提过,在技术浪潮中找到自己的位置。编程技术的更迭越来越快,当进行技术选择时,思考当前的技术方向和自己应该要处的位置很有必要。古语云:知而慎行,君子不立于危墙之下,焉可等闲视之。
React Native
1)Javascript 原型中的哲学思想 @JerryC
记得当年初试前端的时候,学习JavaScript过程中,原型问题一直让我疑惑许久,那时候捧着那本著名的红皮书,看到有关原型的讲解时,总是心存疑虑。当在JavaScript世界中走过不少旅程之后,再次萌发起研究这部分知识的欲望,翻阅了不少书籍和资料,才搞懂 __proto__
和 prototype
的概念。
2)React Native中 Back 键的攻坚实战 @poberWong
在ReactNative中,因为在Native层只有一个MainActivity来承载Js层的逻辑,因此Android上的Back键会在点击一次后直接退出应用。
3)你想知道的关于JavaScript作用域的一切 @Todd Motto
JavaScript中有许多章节是关于scope的,但是对于初学者来说(甚至是一些有经验的JavaScript开发者),这些有关作用域的章节既不直接也不容易理解. 这篇文章的目的就是为了帮助那些想更深一步学习了解JavaScript作用域的开发者,尤其是当他们听到一些关于作用域的单词的时候, 好比:作用域(scope),闭包(closure),this,命名空间(namespace),函数作用域(function scope),全局作用域(global scope),词法作用域(lexical),公有变量(public scope),私有变量(private scope)。
技术纵横
1)技术发展瓶颈的突破 @人月神话
通常情况下,技术人员在某一领域工作3-5年后,会成为团队内或者公司里的核心技术骨干,这个时候他们也会面临几个问题:
- 技术学习的困惑
- 技术深度与广度的选择的困惑
- 技术方向的困惑
2)典型的「学生思维」有哪些? @知乎
职场中典型的「学生思维」有哪些?
3)简单不一定高效,再谈创业公司的产品开发与团队管理 @贾彦民
一般来说,创业公司规模小,人员少,没有大公司的官僚作风。而官僚作风是很害人的东西,记得在大公司时,本来一言而决的一点小事,常常因为害怕承担失败的责任,或参与者(如管项目或管人的经理们)有意的要突出自己的影响力或存在感,在各色人等中往来穿梭,仿佛煞有介事,经过无数次的会议讨论却议而不决。而软件工程师们为配合这样的戏码常常被搞得焦头烂额,无可适从。创业公司由于管理层次简单,很少受到官僚作风的困扰,但也不能想当然地认为万事大吉,高枕无忧了。其实创业公司也有创业公司的局限性,这些局限性常常被忽略,从而影响到产品的开发,本文就来和大家聊聊这个话题。
欢迎关注我们团队的技术公众号