平安科技移动开发二队技术周报(第二十一期)
业界新闻
1)XcodeGhost:墙、感染、信任和欺骗
有人在中国网盘和论坛上传播了一个修改过的Xcode,这个版本的Xcode会在编译出来的App上面加一些可以被远程控制的代码,并且发送数据到某个服务器上。这是iOS出现以来,未越狱系统遭遇的最大安全威胁,在此之前苹果的Sandbox模式几乎没遇到过挑战,iPhone用户甚至大量iOS开发者都认为系统固若金汤,不可能遇到问题。
2)如何评价 React Native Android
关于React Native Android的一个知乎问答。
3)C++ 之父宣布推出「C++ 核心准则」,将通过开源协作方式完善
9月21日上午,Bjarne Stroustrup 在 CppCon 大会上宣告了「C++ Core Guidelines | C++ 核心准则」。英文文档已经在 GitHub 上了,目前还是草案阶段,两个主要的作者是 Bjarne Stroustrup 和 Herb Sutter 。Stroustrup 在呼吁:「We need help!」
Android开发
1)Android程序的反编译对抗研究
对抗反编译是指让apk文件或者dex文件无法正常通过反编译工具,而且有可能导致工具异常或者崩溃,如apktool、baksmali、dex2jar、JEB等等工具,如下图dex2jar无法正常工作。
2)Android Log工具类
工欲善其事,必先利其器。在Android开发过程中,相信都会遇到这样的问题:
- Log太多,不容易找到自己设置打印的内容
- 找到Log但是定位到Java源码有不是很方便
- 对Log打印需要设置Tag,大多时候Tag就是本类的类名,存在重复的工作
- 发布正式版本需要注释或者关掉很多Log开关
3)React Native For Android初体验
React Native For Android提前发布了,代码托管在Github上面,本文是一个尝鲜体验,主要介绍环境配置的过程。目前React Native只支持在OS X系统上面进行开发,其他系统的筒靴们请掩泪飘过。
4)Facebook:我们是如何构建第一个跨平台的React Native APP
在Facebook我们已经应用React Native在发布的产品有超过一年的时间了。几乎是整整一年之前,我们的团队开始规划开发广告管理APP。我们的部门是创建一个新的APP来让数百万的Facebook广告主来管理他们的账号并能创建新的广告。在完成的时候,这不仅仅是FB的第一个全React Native APP而且是第一个跨平台的APP.在这篇文章里,我们希望能和你分享我们是如何构建这个APP,React Native是如何让我们更快的,还有这个过程中我们的经验。
5)Android 沉浸式状态栏攻略
Android 沉浸式状态栏目前只有在大于等于Android 4.4版本才支持,但是4.4和5.0的显示效果有一定的差异,所有本篇博文内容为:
- 如何实现半透明状态栏效果在大于4.4版本之上。
- 如何让4.4的效果与5.0的效果尽可能一致。
iOS开发
1)iOS微信安装包瘦身
微信经过多次版本迭代,产生不少冗余代码和无用资源。之前微信也没有很好的手段知道哪个模块增量多少。另外去年10月微信开始做ARC支持,目的是为了减少野指针带来的Crash,但代价是可执行文件增大20%左右。而苹果规定今年6月提交给Appstore的应用必须支持64位,32位和64位两个架构的存在使得可执行文件增加了一倍多。安装包大小优化迫在眉睫。
2)iOS应用架构思考
3)iOS代码实践总结
最近一个月除了专门抽时间和精力重构之外,还有就是遇到需要添加功能的模块的时候,由于项目中的代码历史因素比较多,第一件干的事情往往是重构整理代码,发现很多之前的代码写的时候没有注意的事情特别多,比如全局变量乱用;方法没有层次感,胡乱添加;对业务不了解的情况下,通过打补丁的方式实现功能等等。所以我决定写一篇文章,把自己的觉得实践中需要注意的一些事项,具体总结一下分享给大家。
4)构建内存高效的应用
近年来,移动设备的性能越来越强大。然而,同桌面电脑相比,性能上总还是有一段不小的差距。同时,用户界面和交互设计的要求也越来越高。所以,为移动设备编写内存高效的应用仍然很有必要。
5)Xcode 7 UI 测试初窥
单元测试非常适合用来做 app 的逻辑以及网络接口方面的测试,但是一个 app 所面向的最终人群还是使用的用户。对于用户来说,app 的功能和 UI 界面是否正确是判断这个 app 是否合格的更为直接标准。而传统的单元测试很难对 app 的功能或者 UI 进行测试。
技术纵横
1)你为什么不分享
这两天恰好有我的前boss在朋友圈分享他看到的文章,是关于分享的主题。作者在文章里把新人或者说菜鸟不肯分享的原因总结为害怕被所谓的高手/大牛所打脸而害怕分享。从我的经历来说,我认为这并非核心原因,仅仅是次要原因之一。因此特意写此文与大家探讨一下。
2)Nicholas C. Zakas:我得到的最佳职业生涯建议
最近我与一同事有一次有意思的讨论。我们回忆了各自所走过的职业历程以及不同个性如何长期消极影响我们的职业。事实情况是,我曾经是那种从大学里走出来的令人讨厌的人(有些人可能会说我现在仍然是那种人,但这是另一回事儿)。当时我很傲慢并且很刻薄,是一个十足的愤青。我自以为我很了解自己的性格并且为这种性格感到骄傲。
3)H5性能优化方案
对于一个H5的产品,功能无疑很重要,但是性能同样是用户体验中不可或缺的一环。原本H5的渲染性能就不及native的app,如果不把性能优化做起来,将极大地影响用户使用产品的积极性。
4)如何高效的学习掌握新技术
学习新技术,就如探索一片新的领域,一般在心态上来说,都会有两种典型的心态,一种是恐慌和抗拒的,一种是积极和开放的,不同的心态会造成不同的结果。
开源函数库与工具
1)Swift 开发者周刊(第 0 期)
大家好,踩了各种坑之后,第 0 期《Swift 开发者周刊》终于和大家见面了。
目前周刊由 SwiftGG 翻译组 维护,每周推送最新的 Swift 文章和开源项目,帮助大家提高 Swift 姿势水平。
2)FreeBuilder
Google出品的基于注解自动生成Builder模式代码的函数库。
3)腾讯 Android 与 iOS 开发工具镜像服务
XcodeGhost事件之后,开发工具的下载需要慎之又慎。
4)F2etest
阿里巴巴出品的一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。
文末摄影鉴赏