@author ASCE1885的 Github 微博 CSDN 知乎
Photo by ASCE1885
本期导读:本期原创专题带来两篇 Android 的总结和调研文章;Android 篇带来五篇文章,可重点关注 Android Studio 2.2 Native 开发新特性;iOS 篇带来 WKWebView 的实践应用;React Native 篇本期主要关注语言和框架层面的知识点;技术纵横篇可重点今年异常火热的直播技术。
原创专题
1)在 2016 年学 Android 是一种什么样的体验? @ASCE1885(移动架构组)
转眼间 2016 年的电量已不足 20%,不禁感慨 How Time Flies!不知不觉 Android 移动开发已经走过了八年的光阴,在这八年的时间中,Android 开发从最初的简单调用系统 API,到各类框架的不断涌现,再到如今的成熟阶段,那么作为一个想在 2016 年开始学习 Android 或者重新开始学习 Android 的开发者来说,你将看到一幅什么样的光景呢?
2)Android 实现 PDF 文件阅读功能调研 @ASCE1885(移动架构组)
Android 系统在 5.0 之前不支持 PDF 文件的阅读,因此,Android 应用中要实现 PDF 阅读功能一般有以下方案:
- WebView 中调用 GoogleDocs
- 调起第三方支持 PDF 阅读的应用
- 集成第三方 PDF SDK,在 Native 页面中阅读
- 集成第三方 JS PDF SDK,在 WebView 页面中阅读
- 将 PDF 文件转换成 HTML 或者图片等格式文件
Android开发
1)Android ListView与RecyclerView对比浅析--缓存机制 @tummyhuang
RecyclerView是谷歌官方出的一个用于大量数据展示的新控件,可以用来代替传统的ListView,更加强大和灵活。最近,自己负责的业务,也遇到这样的一个问题,关于是否要将ListView替换为RecyclerView?秉承着实事求是的作风,弄清楚RecyclerView是否有足够的吸引力替换掉ListView,我从性能这一角度出发,研究RecyclerView和ListView二者的缓存机制,并得到了一些较有益的"结论",待我慢慢道来。
2)一个2年安卓开发者的一些忠告 @MrTrying
我仍然记得2014年我决定做Android开发的那天,这是我一生中做出最好的决定。到现在已经有两年半了。最初的时候,并没有人告诉我如何做才是正确的。我犯了许多错,浪费了很多时间。一年半后,我有机会与以为很有才、经验丰富的Android开发者一起工作,他指导我,教我正确的做事方式。这期间我学到了很多东西,学会了该做什么不该做什么。本文我讲分享这几年所收集的精华。也许可以帮助某人更快上手,避免重复我犯的错误。
3)Android逆向随笔之遇见MultiDex @瘦蛟舞
Multidex会给逆向工程师带来如下麻烦:
- 常见工具静态分析的类和方法不全
- 静态分析工具因为交叉引用的问题导致反编译失败或崩溃
- 动态调试中无法下断点
- hook的时候找不到制定的类和方法
4)Android卡慢监控组件简介 @dragonlin
Android卡慢监控组件,用于监控app在整个使用过程中出现的界面卡顿现象,尝试还原其中的调用堆栈信息,追踪代码来源。同时以堆栈信息的形式体现出来,附加了CPU使用率做参考。最后上报到统计平台,进行聚合排名。
5)Android Studio 2.2 Native 开发新特性 @flarisguan
Android Studio Native 开发新特性扫描:
- 提供对 CMake(官方默认)、ndk-build 两种构建方式的支持。原来的 Experimental Gradle Plugin 构建方式仍然可用,官方建议迁移。
- 构建生成的 .so 文件将直接被 Gradle 打包在 apk 中。
以 LLDB 为 Native 层的调试器,提供跨 Java 层和 Native 层的 Hybrid Debugger。 - 开发环境提供对 Native 代码编辑的支持。
iOS开发
1)如何在 WKWebView 中实现 Safari 原生的阅读模式 @sergiochan
在手机上,阅读模式有两种实现方式,一种是和 Safari 的实现类似的,利用 js 去解析网页数据分析出文本,基本上手机浏览器的实现都和 Safari 类似,另外一种则是抓取网页对应的 RSS 源,解析 RSS 源中的数据格式,取出需要的文本来显示。接下来我要展开讲的就是和 Safari 类似的阅读模式的实现,且是基于 WKWebView 来实现的。
2)携程移动端架构演进与优化之路 @南志文
目前携程 75% 以上订单来自移动端,App 几乎承载了整个集团的所有业务形态。那么无线服务端和客户端底层架构如何支撑如此复杂灵活多样多变的业务,并顺利接入整个集团十几个不同研发团队开发的代码,让这么多团队协同开发,无缝集成在同一个 App 内,还能确保其质量和性能?这对移动端架构提出了非常严峻的挑战。
React Native
1)一个上架了的React Native项目实战总结 @CrazyCodeBoy
喜欢逛GitHub的小伙伴都知道,它有个查看最热项目的功能叫trending,但这个功能只能在网页上查看,而且在手机上浏览显示效果很不友好,而我想在地铁上,餐厅,路上等空余的时间使用它,所以我需要一款带有这个功能的App,不仅于此,我还想要在这款App上查询GitHub上我所喜欢的项目,甚至在手机没网的时候也能看到,而且我想要我的iOS和Android手机都能使用这款App,
于是GitHub Popular便诞生了。
2)Promise & Generator——幸福地用同步方法写异步JavaScript @harryfyodor
异步JavaScript已经不是什么高级的东西了,Nodejs的出现,特别是callback hell令人恐惧的写法已经成功倒逼出了很多很棒的解决方案。在这里看尤雨溪大神的这篇小短文,非常精简扼要地介绍了当前常用的async.js, Promise, co, async/await。个人建议有机会可以都试一下看看。
3)认识React的diff算法 @codingplayboy
React提供一种声明式API,使得我们不需要了解在每次更新时具体改变了什么。这使得开发应用很简单,但是React如何实现这一点并不明显。本篇文章介绍React的diff算法为何在满足高性能应用要求时,React组件的更新是可预测的。
4)有了 async/await 还需要学习 Promise 么 @codefalling
常常有人吐槽前端技术变化太快,说刚学的技术就被新技术取代,甚至有人将其当做不愿意学习的借口,实则不然,就以 Promise 到 async/await 的演变为例,async/await 的出现并不代表我们就完全不需要再去了解 Promise,更不代表 Promise 相关的知识失去了作用,事实上,在使用 async/await 之前,我们必须了解 async/await 和 Promise 之间的联系。
5)JavaScript世界万物诞生记 @写代码的苏打饼
本文以生动的语言描述了 Javascript 中对象的诞生过程。
技术纵横
1)从0到1打造直播 App @Bugly_Tony
互联网内容载体变迁历程,文字——图片/声音——视频——VR/AR——…….。从直播1.0秀场时代(YY),2.0游戏直播(斗鱼、虎牙、熊猫)到如今全民直播3.0泛生活娱乐时代(映客、花椒),国外直播app(Meerkat 、Periscope),随着VA/AR/MR提出的沉浸式视听体验,直播4.0时代很快就能到来。在这个全民娱乐的时代,直播已经火得不要不要的,各大公司都有自己的直播产品。本文主要从直播的一些基本知识,一步步打造直播app。直播那么火的背后有什么样的技术支撑呢?
2)淘宝直播技术分享:如何打造体验优秀的“直播+”产品? @丰火
2016年是移动直播爆发年,不到半年的时间内无数移动直播App掀起了全民直播的热潮。很多不同产品都在自己的应用里面增加了直播模块,希望能趁着这波移动直播的风潮能快速推进自己的产品。而在电商类的APP中,淘宝率先在手机直播里面试水电商直播,并用实际的数据证明了这是一种非常具备前景的新模式。
3)Atlas:手淘Native容器化框架和思考 @玄黎
在刚刚过去的云栖大会上,手淘宣布其移动容器化框架Atlas将于2017年年初开源,对这个框架,在过去团队对外部做过一些分享,外界也一直对其十分关注,到现在它终于即将开源了。本文将介绍Atlas的设计思路和手淘对容器化、组件化和动态化上的思考,主要内容来自阿里巴巴资深技术专家倪生华(玄黎)在2016杭州云栖大会上的分享。
4)用10%的自主时间提升学习 @Ben Linders
Giuseppe de Simone是爱立信公司的首席敏捷教练&培训师。他认为,给团队10%的自主时间用来学习可以缩短交付时间,提高质量,提升积极性。在敏捷希腊峰会2016上,他做了题为“网络化社会时代的管理”,介绍了他们如何试用“10%原则”提高团队的自主权。
欢迎关注我们团队的技术公众号