平安科技移动开发二队技术周报(第十九期)
业界新闻
1)重磅! Google 将于今年秋季重返中国市场, 预计 9 月末宣布
据 The Information 消息 ,Google 最快将于今年秋季推出专为中国大陆定制的「妥协版 Google Play 商店」,当前正等待中国政府部门的审核。熟悉该计划的人士指出,Google 为建设和运营这个本土化应用商店做了全方位的规划,包括与一些中国公司建立合作伙伴关系来共推此事。
2)When is React Native Android coming?
React Native Android发布倒计时。
3)LinkedIn发布旨在检测Android应用漏洞的工具QARK
QARK的首秀是在8月23日的DEFCON 23上,之后便很快在GitHub上公布了源代码。QARK使用PLYJ——一个分析Java源码的Python工具,还使用了Beautiful Soup来分析Android manifest(配置文件)。而且,QARK通过使用多种反编译器(包括:Procyon, JD-Core, CFR,DEX2JAR, 和APKTool)并合并他们的分析结果,还可以处理编译后的二进制文件。
Android开发
1)Log最佳实践
通过本文,我们可以看到即使一个最简单的log都有很多点是可优化的,而且看到了我们之前一直写的模板式代码是多么枯燥乏味。通过这篇文章,大家可以看到一个优化的过程,相信大家都会喜欢最终的简单、美观、方便的log类去调试应用。
2)剖析Android中进程与线程调度之nice
在计算机操作系统中,进程是进行资源分配和调度的基本单位,同时每个进程之内也可以存在多个线程。那么在Android系统(Linux Kernel)中,进程是如何去抢占资源,线程又是如何根据优先级切换呢,本文将尝试剖析这个问题,研究nice在Linux以及Android系统中的应用。
3)Android微信上的SVG
栅格图自身特点导致了高清资源同安装包体积之间的矛盾。这方面矢量图存在明显的优势,它可以在表达清晰图片的同时,不增加文件体积。而且只要你不重新设计图片,就用不着再去适配高dpi模式,矢量图什么分辨率都可以自适应。
4)Android内存泄露案例分析
一款优秀的Android应用,不仅要有完善的功能,也要有良好的体验,而性能是影响体验的重要因素之一。内存泄露是Android开发中常见的性能问题。本文作者以真实案例演示内存泄露从发现、分析定位到最终解决的全过程。
5)手把手教你当微信运动第一名 – 利用Android Hook进行微信运动作弊
当微信运动想要知道我们走了多少步的时候,微信app会询问android系统的计数传感器,随后计数传感器会返回我们行走的步数。因此,如果我们能够拦截微信运动和计数传感器之间的对话,然后伪造一个步数传递给微信运动就可以达到我们想要的作弊效果。
iOS开发
1)Objective-C与Runtime
笔者用了很大的篇幅和代码片段尝试去解释Objective-C最基本的一些概念,包括面向对象、消息派发、内存管理等等,并且也讨论了这些概念在Rumtime上的实现。
2)ReactiveCocoa2 源码浅析
ReactiveCocoa 是一个重型的 FRP 框架,内容十分丰富,它使用了大量内建的 block,这使得其有强大的功能的同时,内部源码也比较复杂。本文研究的版本是2.4.4,小版本间的差别不是太大,无需担心此问题。 这里只探究其核心 RACSignal 源码及其相关部分。
3)浅谈Swift 2中的Objective-C指针
在Objective-C中,开发者经常会用到指针,有些方法也需要直接去操作指针,本文作者详细介绍了如何在Swift中使用指针,而简而言之即为Swift指针类型是对C指针的包装,用.memory的setter/getter实现了解指针引用。
4)如何在ReactiveCocoa中写单元测试
现在很多人在开发iOS时都使用ReactiveCocoa,它是一个函数式和响应式编程的框架,使用Signal来代替KVO、Notification、Delegate和Target-Action等传递消息和解决对象之间状态与状态的依赖过多问题。但很多时候使用它之后,如何编写单元测试来验证程序是否正确呢?下面首先了解MVVM架构,然后通过一个例子来讲述我如何在RAC(ReactiveCocoa简称)中使用Kiwi来编写单元测试。
5)我们是如何创建iOS版的Guillotine菜单动画的
技术纵横
1)Google新logo是如何缩减13000字节的
有人在Quora上提问:Google的新logo是如何做到只有305字节的?旧logo的大小有14000字节之多。来自多伦多的UI设计师Ilya Yakubovich的回答1万+的投票。
2)HTTP/2 与 WEB 性能优化
HTTP/2 究竟会给前端带来什么,什么都不是?还是像某些人说的「让前端那些优化小伎俩直接退休」?
3)A practical introduction to functional programming
Many functional programming articles teach abstract functional techniques. That is, composition, pipelining, higher order functions. This one is different. It shows examples of imperative, unfunctional code that people write every day and translates these examples to a functional style.
4)Java 8 被动迭代式特性介绍
本文首先对迭代设计模式进行简单介绍,然后对 Java 8 引入的 Lambda 表达式进行介绍,接下来重点介绍了 Java 8 与较早 JDK 版本对于集合迭代读取操作的不同点,并通过示例代码形式进行解释,最后对该特性进行总结。
5)细说JavaScript异步函数发展历程
对大部分JavaScript开发者而言,async函数仍是新鲜事物,其发展经历了漫长的旅程。本文将梳理总结JavaScript异步函数的发展历程,并表示未来async函数将成为实现异步的主要方式。
开源函数库与工具
1)vb-android-app-quality
Gradle标准的android质量工具包。
2)BuildingBlocks
积木 – 以知乎日报为数据展现内容;以选项菜单为功能扩展入口;以 Material Design 为主导设计 UI,已帮你完成了应用整体框架的搭建,希望你能利用她快速搭建属于自己的应用。
文末摄影鉴赏