Piasy

NEVER STOP

(可能是)目前最全面的Android Espresso配置指南了

安卓开发过程中测试的编写是一个公认的痛点,本文总结了我在AndroidTDDBootStrap工程中配置Espresso测试所遇到的坑,例如神秘报错android.content.res.Resources$NotFoundException和java.util.zip.ZipException: duplicate entry,以及对dagger,mock网络请求的实践,目测应该是目前最全...

手把手OkBuck教程:应用到AndroidTDDBootStrap项目(续)

5个多月过去了,OkBuck和AndroidTDDBootStrap项目都发生了重大更新,原文中的描述已经过时已久,今天趁着AndroidTDDBootStrap完成重构,更新AndroidTDDBootStrap的OkBuck配置过程,继续体验其畅快淋漓! 第一步,应用插件 按照OkBuck文档的步骤,根据本工程的结构,在/build.gradle中加入配置,配置后/build.grad...

解决A/libc Fatal signal 11 (SIGSEGV)错误,这可能是目前最鲁棒的Android声音录制和播放封装库了

安卓开发过程中一旦开始和硬件打交道,以及涉及到一定的native代码之后,各种闪退就开始浮出水面了,声音录制和播放当然不例外,其中最摸不着头脑的就是A/libc: Fatal signal 11 (SIGSEGV) at了。本文总结了YOLO安卓客户端大半年来的安卓音频实践,整理出一套系统API的封装,命名为RxAndroidAudio。 概览 安卓平台和声音录制与播放相关的主要是4个类:...

完美解决安卓上层输入控件随键盘弹起,下层 UI 变形问题

在YOLO的直播间内,可以发送文字评论,要求文字输入框随键盘弹起,而底下的视频又不会变形,也不会被顶上去,这个问题曾一度困扰我们很久,适逢大师兄公司安卓工程师也遇到了同样的问题,所以简单整理成一篇文章,供更多开发者参考。本文源码地址。 面临的问题 主要还是activity的windowSoftInputMode选项只能设置一种值,如果希望输入框随着键盘弹起而顶上去,那底下的视图要么会顶上去...

OkBuck, underneath the hood

本文对我目前在github上收获star最多的开源项目OkBuck的工作原理进行了深度解析,并在本文写作过程中完成了对OkBuck的第三轮重构,作为OkBuck 1.0版本发布的基础。 渊源 15年9月份开始了解到快速打包相关的技术,此时已经饱受gradle打包龟速的痛苦。 首先了解到的是LayoutCast,但由于其只支持Android 5.0 以上(ART)的手机,虽然5.0的测试机...

RxScreenshotDetector:Android 截屏检测

应PM需求,YOLO可能会对直播过程中的截屏进行检测并通知其他人,类似于Snapchat,此时iOS同事再次表达了先天优势,iOS系统提供了API呀!Google无果之后决定再次造轮子,为了持续表达对Rx的敬意,命名为RxScreenshotDetector,github 源码地址。 效果有图有真相 原理 安卓系统并没有提供任何截屏检测相关的API,网上针对Snapchat的这项功...

RxComboDetector:Android view点击“连击”检测

今天迷迷糊糊听见iOS同事对PM说“连击检测”其实只需要传一个参数就行了,我大为震惊,iOS竟有如此炫酷的API,Android似乎没有呀!在google和github搜索两次之后无果,我决定自己实现一个连击检测的库。因为主要使用RxJava实现,所以命名为RxComboDetector,github 源码地址。 效果有图有真相 原理 基本思想非常简单,如果本次点击事件发生的时间,...

Hey 2016

离开校园,正式步入职场的第一次跨年。2015,成长真的很多,2016,还要更多的成长! 生活 为什么先说生活?因为离开校园确实是一个非常大的转变,也是一个很好的契机,虽然14年夏天就开始近乎全职的实习,但真的毕业之后,还是完全不一样的。 7月,从学校毕业,邀请父母亲人来北京参加了毕业典礼。 也是7月,搬进了“新家”,我对寓所非常满意,我想它将是我真正拥有自己的家之前,唯一的“新家”了。...

安卓通知栏消息点击启动Activity时“Intent flag残留”问题

今天开发的过程中偶遇一个系统的bug:响应通知栏消息,启动一个新的Activity,之前代码写得有问题,为intent设置了Intent.FLAG_ACTIVITY_CLEAR_TASK这个flag,删除这行代码重新安装之后,竟然发现修改不起作用,启动Activity的行为依然是清除了之前所有的Activity,疑惑之余,对这个问题进行了进一步的测试,总结成此文。 功能需求 首先说一下响应...

Android Runtime Permission测试

Android 6.0引入了Runtime Permission模型,一方面用户不必在安装APP时便授予所有权限,另一方面,对于第三方ROM,APP自身也能方便地判断是否有某项权限了。在本文中,我将以读取通讯录为例对运行时权限进行一次全面的测试,完整代码可以在Github下载。 快速使用运行时权限 在AndroidManifest.xml中声明权限,就算是运行时权限,这一步也是不能忘...