Photo by ASCE1885
本期导读:本期原创专题带来
android-apt的最新消息;Android 篇带来五篇技术实践,覆盖了热更新,增量更新,性能优化等主题;iOS 篇也同样带来五篇文章,覆盖了网络优化,应用架构,卡顿监控和 AOP 等主题;React Native 篇可重点关注下 58 同城基于 React Native 的开发实践;技术人数篇带来三篇架构和成长的热文。
原创专题
1)android-apt 即将退出历史舞台 @ASCE1885(移动架构组)
伴随着 Android Gradle 插件 2.2 版本的发布,近期 android-apt 作者在官网发表声明证实了后续将不会继续维护 android-apt,并推荐大家使用 Android 官方插件提供的相同能力。也就是说,大约三年前推出的 android-apt 即将告别开发者,退出历史舞台,Android Gradle 插件提供了名为 annotationProcessor 的功能来完全代替 android-apt。
Android开发
1)QFix探索之路—手Q热补丁轻量级方案 @Bugly_Tony
QFix 是手Q团队近期推出的一种新的 Android 热补丁方案,在不影响 app 运行时性能(无需插桩去 preverify)的前提下有效地规避了 dalvik 下"unexpected DEX"的异常,而且还是很轻量级的实现:只需调用一个很简单的方法就能办到。
2)SDK无埋点技术在百分点的探索和实践
本文带来SDK无埋点技术,大家可以了解到SDK无埋点技术是怎么实现的,百分点通过之前的埋点技术怎么演化了这种无埋点技术。我分三个部分来讲一下:
- 就是讲一下什么是SDK无埋点技术;
- SDK无埋点技术如何实现?讲一些技术细节;
- 在实践中遇到的一些坑和解决方法。
3)Android 增量更新完全解析 是增量不是热修复 @张鸿洋
增量更新的流程是:用户手机上安装着某个应用,下载了增量包,手机上的apk和增量包合并形成新的包,然后再次安装(注意这个过程是要重新安装的,当然部分应用市场有root权限你可能感知不到)。
4)Android 性能优化典范(六) @胡凯
这里是Android性能优化典范第 6 季的课程学习笔记,这次一共才 6 个小段落,涉及的内容主要有程序启动时间性能优化的三个方面:优化 activity 的创建过程,优化 Application 对象的启动过程,正确使用启动显屏达到优化程序启动性能的目的。另外还介绍了减少安装包大小的 checklist 以及如何使用 VectorDrawable 来减少安装包的大小。
5)请不要滥用SharedPreference @weishu
SharedPreference是Android上一种非常易用的轻量级存储方式,由于其API及其友好,得到了很多很多开发者的青睐。但是,SharedPreference并不是万能的,如果把它用在不合适的使用场景,那么将会带来灾难性的后果;本文将讲述一些SharedPreference的使用误区。
iOS开发
1)iOS应用架构现状分析 @mrpeak
iOS从2007年诞生至今已有近10年的历史,10年的时间对iOS技术圈来说足够产生相当可观的沉淀,尤其这几年的技术分享氛围无论国内国外都显得异常活跃。本文就iOS架构这一主题,结合开发圈里讨论较多的几种主流方式,再配以博主自己的理解,做下现状分析。给自己做下知识梳理的同时,也期望能引入新的思考。
2)iOS应用UI线程卡顿监控 @MrPeak
iOS设备虽然在硬件和软件层面一直在优化,但还是有不少坑会导致UI线程的卡顿。对于程序员来说,除了增加自身知识储备和养成良好的编程习惯之外,如果能一套机制能自动预报“卡顿”并检测出导致该“卡顿”的代码位置自然更好。本文就可能的实现方案做一些探讨和分析。先贴出最后方案的github地址。
3)深度优化iOS网络模块 @mrpeak
几乎每一个讲究的iOS项目都会有一个「网络模块」,大部分的网络请求都是通过HTTP完成,使用成熟的第三方库诸如AFNetworking很容易搭建一个功能简易的网络模块。但这一模块要优化好却没那么简单,是个旷日持久的工作,笔者根据自己多年的“填坑”经验,总结一下深度优化iOS项目网络模块的方方面面,也给自己做下知识梳理。
4)iOS 如何实现Aspect Oriented Programming (上)(下)
面向切面的程序设计(aspect-oriented programming,AOP,又译作面向方面的程序设计、观点导向编程、剖面导向程序设计)是计算机科学中的一个术语,指一种程序设计范型。该范型以一种称为侧面(aspect,又译作方面)的语言构造为基础,侧面是一种新的模块化机制,用来描述分散在对象)、类)或函数)中的横切关注点(crosscutting concern)。
React Native
1)npm scripts 使用指南 @阮一峰
Node 开发离不开 npm,而脚本功能是 npm 最强大、最常用的功能之一。
本文介绍如何使用 npm 脚本(npm scripts)。
2)基于 React Native 的 58 同城 App 开发实践 @彭飞
React Native 在 iOS 界早就炒得火热了,随着 2015 年底 Android 端推出后,一套代码能运行于双平台上,真正拥有了 Hybrid 框架的所有优势。再加上 Native 的优秀性能,让越来越多的公司在实际项目中一探究竟。58 同城 App 发布模块年代久远,一直计划进行重构以适应日益苛刻的用户体验,这个需求与我们在 React Native 上一探究竟的意愿一碰撞,就产生了 React Native 在 58 App 的开发实践。
3)豆瓣的混合开发框架 -- Rexxar @lincode
混合开发的直白解释是 Native 和 Web 技术都要用。但形式上,应用仍然和浏览器无关,用户还是需要在 App Store 和 Android Market 下载应用。只是在开发时,开发者以 Native 代码为主体,在合适的地方部分使用 Web 技术。比如在 iOS 中的 UIViewController 内放置一个 UIWebview(一个浏览器引擎,只拥有渲染 HTML,CSS 和执行 JavaScript 的核心功能)。这样,部分用户界面就可以在 UIWebView 中使用 Web 技术实现。
4)JavaScript 模块化入门Ⅰ:理解模块 @余博伦
作为一名JS初学者。假如你听到了一些诸如“模块化构建&模块化载入” “Webpack&Browserify” 或者 “AMD&CMD”之类的术语,肯定瞬间就凌乱了。JavaScript的模块化听起来挺深奥,可其实理解它对开发者来说特别实用。在这篇文章里,我会尽量深入浅出地把这些深奥的术语翻译成浅显易懂的人话(加上一些代码示例)。希望你多少能从中学到点东西。
5)JavaScript 模块化入门Ⅱ:模块打包构建 @余博伦
在上一篇教程里我们已经讨论过什么是模块,为什么要使用模块以及多种实现模块化的方式。这次,我们会聊一聊什么是模块打包,为什么要打包模块,模块打包的方式工具,还有它当前在Web开发中的运用。
6)Facebook 发布了新的 Node 模块管理器 Yarn,或取代 npm 客户端 @Zhangjd
在 Facebook 中,我们多年来一直在使用 npm 客户端并取得了成功,但随着代码仓库与团队人数的增长,我们在一致性、安全性以及性能方面遇到了挑战。在尝试解决每个方面的问题后,我们最终决定着手打造一套新的客户端解决方案,以帮助我们更可靠地管理依赖。我们把这个客户端工具称为 Yarn —— 更加快速、可靠、安全的 npm 客户端的替代品。
技术人生
1)好的技术团队不是“需求翻译机”或“架构优化机” @尾尾
一个好的技术团队应该具备哪些特质?一个好的技术团队的leader应该怎样实施管理?技术和业务如何做到完美结合?这是来自天猫技术团队的经验,仅供参考。
2)互联网合并浪潮中,内部员工该何去何从? @100offer
100offer通过采访我们平台上那些亲身经历过公司合并的候选人,给每一位身处这个时代的互联网人以警醒。当有一天,公司合并这件事落在你身上时,希望你能从这篇文章中汲取干货,从容面对、冷静处理。
3)工程师成长之路:工作1-3年工程师如何突破瓶颈期? @雷果国
在我看来,一个工程师的养成可以分为四个阶段:
- 新人期
- 成熟期
- 发展期
- 事业期
欢迎关注我们团队的技术公众号
