平安金融科技移动技术周报(第十五期)
本期导读:本期原创部分带来关于 Redex 的简介,虽然目前还不成熟稳定,但可以持续关注!Android 篇重点关注进程保活的介绍,很详尽;iOS 篇带来一篇系统重构实践,个中思想有借鉴意义;React Native 开源一周年,FaceBook F8 会议推出基于 React Native 的 F8 APP 以及 对应的开发指南,可以作为开发模版进行学习。开源方面,还可以关注一些 Google 推出的 agera,一个类似于 Rxjava 的函数库,或许在不久的将来,你能够在 Support Library 中见到它。
1)基于 Facebook Redex 实现 Android APK 的压缩和优化 @ASCE1885(应用架构组)
最近 Facebook 开源了一个名为 Redex[1] 的工具包,专门用于 Android 字节码的优化,经过 Redex 转换后的 APK,体积变得更小,运行速度变得更快。Redex 基于管道的方式来优化 Android 的 .dex 文件,一个源 .dex 文件通过管道进行一系列的自定义转换后,将得到一个优化的 .dex 文件。接下来将带大家简单快速的了解 Redex 是什么,以及它的基本原理和使用方法。
关于 Android 平台的进程保活这一块,想必是所有 Android 开发者瞩目的内容之一。你到网上搜 Android 进程保活,可以搜出各种各样神乎其技的做法,绝大多数都是极其不靠谱。前段时间,Github还出现了一个很火的“黑科技”进程保活库,声称可以做到进程永生不死。
单元测试是为了测试某一个代码单元而写的测试代码。但是什么叫“一个代码单元”呢?是一个模块、还是一个类、还是一个方法(函数)呢?不同的人、不同的语言,都有不同的理解。一般的定义,尤其是是在OOP领域,是一个类的一个方法。在此,我们也这样理解:单元测试,是为了测试某一个类的某一个方法能否正常工作,而写的测试代码。
在Activity生命周期管理 以及 插件加载机制 中我们详细讲述了插件化过程中对于Activity组件的处理方式,为了实现Activity的插件化我们付出了相当多的努力;那么Android系统的其他组件,比如BroadcastReceiver,Service还有ContentProvider,它们又该如何处理呢?
线程是程序员进阶的一道重要门槛。对于移动开发者来说,“将耗时的任务放到子线程去执行,以保证UI线程的流畅性”是线程编程的第一金科玉律,但这条铁则往往也是UI线程不怎么流畅的主因。我们在督促自己更多的使用线程的同时,还需要时刻提醒自己怎么避免线程失控。
Android 架构相关的文章及开源库合集。
在过去的几个月内,我主导着团队完成了一项工程浩大(累积八个人月的工作量)的重构工作——为我们的App替换数据库。之所以能够把这种伤筋动骨的事情称之为重构,是因为在这段时间内,我们每天向主干合并两到三次代码,期间App上线五次,用户没有感知到任何影响。在这篇文章中,我将讲述我们如何在不影响系统外部行为,也不影响正常交付的情况下,替换掉了数据库实现。
在 Glow Baby 的开发中,我们也做了一些新的尝试 - 使用 Swift 开发,并基于 Swift 的语言特点设计了新的 iOS App 架构。总体上,写 Swift 更加有趣,所有的努力最终也证明是值得的:App 运行更加流畅,代码更整洁可读性更高,我们开发效率也大大提高。
React Native的编程思想类似于iOS, 导航栏也使用Navigator作为标识, 类似于Android的ActionBar. 导航栏作为最重要的应用组件之一, 除了处理页面导航功能以外, 还会提供页面栈的管理, 管理页面的跳入和跳出. 本文介绍一下 Navigator 组件的使用方式。
每年,作为 F8 会议的一部分,Facebook 都会开发一款会议相关的 iOS 和 Android 的 app,让参会者可以通过 app 安排会议行程,了解更多关于演讲和演讲者的信息。这个 app 还提醒参会者即将开始的演讲,或者发送一些临时公告。今年,我们不仅在 GitHub 上开源了代码,我们还制作了一系列的教程。想用简单明了的语言介绍 React Native 及其开源生态。
Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象。由于JVM通过字节码的二进制信息加载类的,那么,如果我们在运行期系统中,遵循Java编译系统组织.class文件的格式和结构,生成相应的二进制数据,然后再把这个二进制数据加载转换成对应的类,这样,就完成了在代码中,动态创建一个类的能力了。
你想知道在 Realm 的引擎盖下它到底是怎么工作的。你想学习些相关的理论、机制和背后的原因。好吧,你来到正确的地方了。 我们马上会讲到相关的所有有趣的细节。在这篇博文里,我们会解释 Realm 是如何还有为什么是这样构建的,以及它重要的原因。
本期测试技术周报首先为大家带来两篇原创文章,然后介绍了React和go语言的测试方法,同时搜集各大互联网公司在持续集成和平台化方面的实践经验。不过要重点推荐还是最后的测试杂谈,让我们带着google老大哥的烦恼讨论下开发和测试的关系。
本文翻译自Facebook工程团队的官方博客,React Native: A year in review,本文分别从 RN 起源,项目过去一年在FB内部的发展,在业界的广泛使用和生态圈的快速建立,在 Github 上的开源协作,核心团队对 RN 的未来展望等进行一一讲述,来吧看看 RN 的传奇之路。
1)JSPatchX
JSPatch XCode 代码补全插件。
2)agera
Agera 是 Google 开源的一个帮助你在 Android 上写函数式、异步和响应式编程的函数库。
欢迎关注我们团队的技术公众号