平安科技移动开发二队技术周报(第二十四期)
业界新闻
1)Android“棉花糖”正式发布
Google宣布在其Nexus设备上发布代号为"棉花糖"的Android 6.0系统,预计该版本操作系统将在更多设备上应用。
2)从网易邮箱被爆看企业的网络安全
昨天下午(10月19日)网易”亮“了,乌云报告网易邮箱存在漏洞,涉及数亿网易邮箱账号和密码(MD5加密)的泄露。
3)App使用有米SDK遭下架事件分析:使用私有API就代表隐私侵犯?
10月19日晚首先由国外媒体报道的一起安全事件——研究机构SourceDNA发现众多使用有米SDK的App在收集用户个人数据,因而遭苹果下架。今天这一事件也得到国内媒体的广泛报道,许多用户不明觉厉。
Android开发
1)天猫技术团队使用React Native代替H5实现产品化落地
React-Native 是Android端实现实现动态部署的另一种思路,绕过dexLoad【一些现有的Android插件框架】,同时实现了前端人员和客户端人员资源的共享,总之是非常值得期待和尝试。
2)Android GC 那点事
想写一篇关于Android GC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC, GC ALLOC和GC COCURRENT有什么区别,能不能想办法扩大堆内存减少GC的频次等等。
3)Kotlin: Java 6 废土中的一线希望
去年,Java8 发布了,增加了很多新特性和提升,比如lambda,stream。Java 9 的标准也已经在制定了。但是超过半数的 Android 设备仍在运行着 Java 6,我们要怎么才能用上新的现代化语言呢?
在 DroidCon NYC 2015 的这个分享里,Michael Pardo 介绍了 Kotlin: 由 JetBrains 开发出的 JVM 静态语言。Kotlin 由很多新的特性,比如 lambdas,类扩展(class extensions),和 null 安全(null-safty)。它简洁明了,同时由很高的互操作性(interoperable)。
4)开源选型之 Android 三大图片缓存原理、特性对比
本文主要对比分析了三款主流图片缓存函数库的,它们分别是Universal ImageLoader,Picasso和Glide。开发者在做技术选型时可以zuo w
5)Android动态加载技术三个关键问题详解
动态加载技术(也叫插件化技术)在技术驱动型的公司中扮演着相当重要的角色,当项目越来越庞大的时候,需要通过插件化来减轻应用的内存和CPU占用,还可以实现热插拔,即在不发布新版本的情况下更新某些模块。动态加载是一项很复杂的技术,这里主要介绍动态加载技术中的三个基础性问题。
iOS开发
1)iOS高性能图片架构与设计
一个优秀的图片组件应该具有这些特性:集并发控制,请求合并,下载,缓存,缓存自动淘汰,图片处理,动画的从数据源到图片显示的一站式解决方案。做到图片加载展示如丝般顺滑。支持autolayout和代码布局,提供了对网络图片、系统相册图片、本地图片的加载与现实的支持。经过实际项目检验,性能优秀、运行稳定。高度可定制性:可以和现有的任何下载组件和图片处理组件协同工作。
2)Realm 核心数据库引擎探秘
Realm 大部分代码都是开源的,但是其强大功能取决于隐藏在平台内部的一个核心数据库引擎,这个引擎完全由 C++ 编写而成。在这次讲座当中,来自 Realm 的工程师 JP Simard 将带领大家一探 Realm 的核心!JP 将阐述 Realm 设计背后的准则,包括 Realm 是如何保证快速高效运行的,以及为什么我们要自己撰写数据库引擎,而不是像包括 Core Data 在内的移动端数据库解决方案那样,采用 SQLite 作为内部核心。
3)iOS 应用架构谈 动态部署方案
这里讨论的动态部署方案,就是指通过不发版的方式,将新的内容、新的业务流程部署进已发布的App。因为苹果的审核周期比较长,而且苹果的限制比较多,业界在这里也没有特别多的手段来达到动态部署方案的目的。这篇文章主要的目的就是给大家列举一下目前业界做动态部署的手段,以及其对应的优缺点。然后给出一套我比较倾向于使用的方案。
4)AFNetworking 3.0迁移指南
AFNetworking是一款在OS X和iOS下都令人喜爱的网络库。为了迎合iOS新版本的升级, AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持。如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本。本指南将引导您完成这个过程。
5)JSPatch 实现原理详解
JSPatch 是一个 iOS 动态更新框架,只需在项目中引入极小的引擎,就可以使用就可以使用 JavaScript 调用任何 Objective-C 原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug,目前在 github 上开源。
微信 iOS 客户端使用了 JSPatch,本篇文章详细阐述 JSPatch 的实现原理和一些细节,以帮助使用者更好地了解和使用 JSPatch。
技术纵横
1)构建混合移动应用的流行框架优缺点对比
仅仅几年前,使用 JavaScript 开发移动应用程序还只是古怪的实验,无需使用 Java 和 Object C 就可创建 iOS 和 Android 应用程序的想法似乎吸引着很多 web 开发者。现在出现了大量的框架,使我们只使用 web 技术就可以创建移动应用,并且用户体验和以往用原生语言开发的应用差不多。
2)RESTFUL API 安全设计指南
REST的全称是REpresentational State Transfer,表示表述性无状态传输,无需session,所以每次请求都得带上身份认证信息。rest是基于http协议的,也是无状态的。只是一种架构方式,所以它的安全特性都需我们自己实现,没有现成的。建议所有的请求都通过https协议发送。
3)Web开发的未来:React、Falcor和ES6
Widen是一家数字资产管理解决方案提供商。目前,其技术栈还非常传统,包括服务器端的Java、浏览器端的AngularJS、提供REST API支持的Jersey以及jQuery、 Underscore、lodash、jQuery UI和Bootstrap等各种库。近日,该公司的首席开发人员Ray Nicholus在一篇文章中提出了一个面向未来的Web开发技术栈,用于取代现有的工具。
4)微软在Edge预览版中支持Async/Await特性
即将到来的ES 2016中有一个async/await特性,微软浏览器Edge目前已支持这一特性,在Edge最新的预览版中仍需开启实验性标志位才能进一步体验,但是想要在未来被广泛接受,走出这一步至关重要。浏览器上可能不放心使用ES6特性,但在react-native中可以尽情的使用。
5)你应该知道的 RPC 原理
大型互联网公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责。这时就会遇到两个问题:1)要搭建一个新服务,免不了需要依赖他人的服务,而现在他人的服务都在远端,怎么调用?2)其它团队要使用我们的服务,我们的服务该怎么发布以便他人调用?下文我们将对这两个问题展开探讨。
开源函数库与工具
1)DroidScripts
Android开发中一些有用的脚本。
2)Android 6.0源码
Android 6.0源码网盘地址。
3)QCON 上海 2015演讲PPT
刚刚结束的QCON嘉宾演讲的PPT,大家各取所需。
4)React 入门教程
React一个不错的中文入门教程,尚在更新中。
欢迎关注我们团队的技术公众号