平安金融科技移动技术周报(第三十四期)

1,359 阅读10分钟

@author ASCE1885的 Github 简书 微博 CSDN 知乎

Photo by Marsel van Oosten

本期导读:本期原创专题带来一篇H5图片上传的实践总结,以及一篇读书笔记,开发人员建议好好读读这本书,会有收获的;Android 篇干货满满,请仔细研读;iOS 篇带来三篇经验总结;React Native 篇可重点关注通信原理一文,写得不错;技术纵横篇继续带来 JaCoCo 的完结篇;技术人生篇带来7篇干货,能够一定程度上给予指引。

原创专题

1)H5对上传图片的处理 @严晓娥(运营服务组)

H5实现图片上传的整体思路是:利用FileReader进行文件读取,通过EXIF插件判断拍照方向,用canvas进行图片旋转及压缩。

2)ASCE1885 静心于书系列之《我编程,我快乐:程序员职业规划之道》の 选择市场 @ASCE1885(应用架构组)

本文是 《我编程,我快乐:程序员职业规划之道》一书的读书笔记和技术点评,这是第一部分,主题是选择市场,后续会不断更新其他主题的。

Android开发

1)Android构建过程分析 @winghe

或许我们都知道Android构建会经历资源合并打包、源码编译、dex生成及打包签名等步骤,可是不是每个人对这些过程中发生的事情都了然于心呢?或许不然,于是带着好奇心开始了对Android gradle plugin的学习,现简要整理一下。

2)Freeline - Android平台上的秒级编译方案 @弦影

Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队在Android平台上的量身定做的一个基于动态替换的编译方案,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想, 并对代码及资源编译流程做了深入的性能优化。

3)Android动态布局入门及NinePatchChunk解密 @abaohuang

相信每一个Android开发者,在接触“Hello World”的时候,就形成了一个观念:Android UI布局是通过layout目录下的XML文件定义的。使用XML定义布局的方式,有着结构清晰、可预览等优势,因而极为通用。可是,偏偏在某些场景下,布局是需要根据运行时的状态变化的,无法使用XML预先定义。这时候,我们只能通过JavaCode控制,在程序运行时,动态的实现对应的布局。

4)App优化之性能分析工具 @anly_jun

一般来说, 学习一门新的技术, 最应该做的就是阅读其官方文档, 那是最权威的。Android本身给我们提供了很多App性能测试和分析工具, 而且大部分都集成到Android Studio或DDMS中, 非常方便使用。

5)浅谈RxJava与2.0的新特性 @dieyidezui

说起 RxJava ,相信诸多 Android 开发者都不会陌生。作为一个知名的响应式编程库,从前年开始逐渐变得火热,从小众到被众多 Android 开发者们广泛引入与流传,其在 GitHub 的仓库截止笔者写这篇文章时,已经有16400+个 star。

6)五年Android开发,让我“刻骨铭心”的那些坑 @Open软件开发小组

这篇文章是本人对在开发过程中踩坑经历的一次总结;分为系统API的坑、使用不当导致的坑、开源项目中的坑等几个方面,知识面有限,认知难免会有偏颇,如发现有问题还请指正。

7)Android ANR监控与分析 @董洪辰

ANR(Application Not Responding),系统检测到APP长时间没有反应,ANR虽然不是异常但会严重影响用户体验,所以上报解决ANR是非常必要的。

iOS开发

1)微信读书排版引擎自动化测试方案 @wereadteam

在 微信读书 App 中,排版引擎负责解析 EPUB 或 TXT 格式的书籍源文件,将排版后的书籍内容如文字、图像、注解等元素渲染至屏幕上,是最常用、最复杂的组件之一。而开发同学对排版引擎的日常修改,可能影响了海量书籍的排版结果。对排版引擎代码变更的测试,往往耗时多、难度大、容易漏测。本文介绍了为解决测试的难题,如何逐步将人工测试步骤自动化,最终构建了一套微信读书排版引擎自动化测试流程,以确保微信读书排版引擎的质量。

2)那些年提交AppStore审核踩过的坑 @我是云峰小罗

做iOS开发近5年了,每次提交版本时不可谓不小心翼翼,如履薄冰,但是还是难免踩到了一些坑。苹果的官方文档(AppStore审核条款)这里就不罗列了,太冗长繁琐了,而且大部分是一般app都不会触碰的到的,今天我主要想以自己的亲身经历,跟大家回顾一下这些年我提交AppStore审核时踩过的坑,并且针对如何避免给出一些tips供大家参考。大神请忽略,专家请轻拍。

3)获取任意线程调用栈的那些事 @bestswifter

这篇文章的重点不是介绍获取调用栈的细节,而是在实现过程中的遇到的诸多问题和尝试过的解决方案。有的方案也许不能解决问题,但在思考的过程中能够把知识点串联起来,在我看来这才是本文最大的价值。

React Native

1)React Native Android 通信原理 @longv2go

React Native (Android)内置了一个用于解析JavaScript(以下简称JS)脚本的框架,方便把Java类暴漏给JS调用,具体的使用方法参见,这篇文章就用来研究一下Java和JS的通信原理,JS是如何调用Java的。

2)React + Redux 组件化方案 @何方舟

本文在对介绍React + Redux 组件化方案的实例介绍。

3)React Native for Android 接入实践 @冯俊

相对于目前团队所使用的Native和H5开发方案,React Native具有调试方便、代码复用度高的特点,并且能在维持Web开发节奏的同时,具有和Native版本一致的用户体验。基于此,公司团队从今年5月份开始尝试接入React Native for Android并实现业务落地。经过两个多月的努力,目前已形成配合插件化形成的一整套RN容器框架,若干业务模块的产品化落地。

4)3分钟带你玩转React Native研发所有调试技巧 @liyuechun

React Native 调试方法的小汇总。

5)是时候理清 React 开发中的一些疑惑了 @zhangwang

React其实很好上手,我在最初使用时并未去了解其一些细节性的东西,但是好像在项目中也一直能正常运作。但是那时总会有一种不安感,深感自己对React的使用逻辑并未理解得非常清晰,本文的目的就在于理清这种使用逻辑,当然个人见解定有偏颇,如果你有一些建议,也希望您能在讨论区予以指教,如果你到现在还没有怎么接触过React,推荐可以跟着官方文档的例子体会下React再来看本文,也许这样收获更大一些,后文的链接里还有一个更加高级的例子也是非常好的入门教程。

技术纵横

1)JAVA代码覆盖率工具JaCoCo-踩坑篇 @ 刘洋

JAVA代码覆盖率工具JaCoCo-原理篇和JAVA代码覆盖率工具JaCoCo-实践篇已经给大家介绍过了,本篇为踩坑篇,这里的话题不是说明JaCoCo有什么问题,而是把过程中遇到的几个棘手问题的解决方法分享给大家,只要细心,放下焦虑的心态,问题都可以解决的。

2)HTTP, HTTP 2.0, SPDY, HTTPS 你应该知道的一些事 @TAT.tennylv

作为一个经常和web打交道的程序员,了解这些协议是必须的,本文就向大家介绍一下这些协议的区别和基本概念,文中可能不局限于前端知识,还包括一些运维,协议方面的知识,希望能给读者带来一些收获,如有不对之处还请指出。

技术人生

1)如何抓住技术浪潮变革的红利 @冯大辉

技术的作用从短期来看往往会被高估,我经常看到有不少人找我说“我现在网站快崩溃了,经常被DDoS,需要找个人来解决这些问题”。但是业务走上正轨之后,公司就不会把目光和焦点放在技术或者产品上来,这个时候技术又往往容易被低估。

2)永远要设定deadline,完成比完美更重要 @杨小米

追求完美,希望任何细节万无一失,接到一个任务常常要思考很久才开始..追求极致当然好,但这却为我们带来了一个不好的习惯—拖延。

3)傻瓜程序员才拒绝成为指导者 @foruok

成为指导者对程序员是百利而无一害的事,拒绝这样的机会是愚蠢的。

4)论一线技术领导者的基本素养 @朱赟

从古至今,国家这样的庞大的政治机器,不仅需要优秀的中央领导人,更需要县级到省级的优秀执行者。其实一个公司的技术团队也是一样。很多时候,“高层” 技术领导者很重要,但是 “一线” 技术领导者更直接影响工程师的生产力。而对于两者是否优秀的评判标准,差别还是蛮大的。

5)突破程序员思维 @技匠

过去我曾一直认为程序员是依靠他们的技术在编程,也是因为技术使得程序员的水平有高低之分,但随着我写代码的时间越来越长,也接触到更多的程序员,我渐渐发现程序员们其实是依靠他们所特有的程序员思维在进行编程的,而他们中的佼佼者正是那些有着更高思维成熟度的优秀程序员们。

6)为什么说绝大多数人都是“低品质勤奋者”? @布洛迪

大概很少人会拒绝 “成功来自勤奋” 这种说法,就像大多数人拥有梦想一样。说不定某天的凌晨四点,你就踏上了征程,去迎接一整天的忙忙碌碌和东奔西走。好不容易处理好一天的工作,你顾不上身体被掏空,又赶着最后一班地铁回家。

7)何为技术人的核心竞争力 @JerryC

在一件事情上投入的越多,就会让我更加思考自己正在做的,正在走的方向。在高速发展,日新月异的技术圈子中,到底哪些是不变的,或可沉淀的东西。渐渐的会想到这样的一个问题:技术人的核心竞争力到底是什么?

欢迎关注我们团队的技术公众号