June 24th, 2018
Android Weekly Issue #315本篇内容包括,Android P的优先级队列管理,Yelp性能测试系列最后一篇帧率监控,以及近期比较火的Airbnb下一步移动战略,还包含连接Clould IoT Core的Library介绍,ML Kit文字识别,与如何从AndroidJob迁移到WorkManager.还有一篇如何搭建面试机器人的介绍,以及尚在早期的Kotlin Native跨平台数据库的概况等.
ARTICLES & TUTORIALS Exploring Android P: Priority Buckets这次Google IO Android P推出了Priority Buckets来提供更好的电池管理.
通过使用频率,将App分为Active,Working Set,Frequent,Rare,Never几个级别, 不同级别会对Jobs还有Alarms有不同的最大延时.
分组是动态改变的.
My checklist for fixing build issues作者的AndroidTest里面Import都无法识别了,提示Cannot find symbol,解决办法是清掉一些缓存.
包括本地Gradle,Project idea与gradle,以及AS的Cache...而后解决了.
Understanding the emotions of users through NLP作者讲解了通过Firebase functions platform + Google Cloud Natural搭建一个App的客服系统.
Introducing BillingxGoogle唯一渠道实现App内购买的API就是Billing Library,但是对于测试者来说使用起来很麻烦,而且直到2018 Google I/O也没有新的动作.
之前也分享过一个叫做Register,通过Mock,实现了本地的测试,但是会在Production Apk中引入没必要的代码.
作者自己封装了一个叫BillingX的库,提供了空实现给Production版,通过releaseImplementation引入.
Text Recognition with ML Kit介绍了这次ML Kit中的云端文字识别API,通过Firebase服务Enable,可以实现图片中文字的in-cloud text recognition,不想掏钱可以试用哦,选择Blaze Plan按需缴费,头1000次请求免费的.
Publishing your Android, Kotlin or Java library to mavenCentral大家平时常用的Chris Banes的脚本要迁移到Kotlin上还要做一些改动,作者自己弄了一份,并且把它做成了plugin,只需要加到自己的plugin dependencies里面就行了.
Performance Improvements for Search on The Yelp Android App - Part 3本篇为系列文章的最后一部分,主要介绍了CI上面的Performance如何检测系统帧率变化.
Yelp通过FrameMetrics API来获取帧率信息,低于16ms就是快帧,高于就是慢帧,他们会对装有信息的JSON进行分析,其中dopped frame会列出各个部分所消耗的时间.
最后又总结了整个性能提升过程中所采取的措施,除去这节的Performance Monitoring来防止Regression导致的问题,还包括之前的减少主线程工作,异步inflating layout,对搜索结果view model的caching等.
Android Things client library for Google Cloud IoT Core为广大IoT爱好者带来福音,client library提供了硬件设备轻松连接google Cloud IoT Core,通过几行代码,便可以轻松的上传传感器信息到云端进行控制.
implementation 'com.google.android.things:cloud-iot-core:1.0.0'由于硬件设备所在的环境多变,library还提供了很多错误处理机制,数据信息缓存等.
How to Migrate from Android-Job to WorkManager作者以前用的是Evernote搞的AndroidJob,本篇介绍了他如何迁移到google最新的WorkManager上面.
基本使用方法跟AndroidJob类似,Woker通过OneTimeWorkRequestBuilder去build单发事件,通过PeriodicWorkRequestBuilder去build周期性事件,通过setInputData可以添加一些数据,通过setConstraints添加约束,如网络要求等,通过WorkManager.getInstance().enqueue讲Work加入队列.
Work触发时会执行doWork方法, 返回值Worker.Result.SUCCESS表示成功,类对象inputData可以获取传进来的数据.
What’s Next for Mobile at Airbnb作者介绍了在Airbnb放弃RN之后下一步要走的路线.
通过DSL定义跨平台统一的设计语言,实现Server-Driven Rendering,通过自己开发的基于Sketch的设计软件Lona做到一套设计生成不同平台的代码.当然这一切都是在Build的时候做的.
基于之前的Epoxy,推出新的MvRx,并且支持Android与iOS,Android上是对RecyclerView的封装,可以更方便的实现复杂List的渲染.
通过来实现编译速度的提升,只去下载自己关心的Module.
SQLite on Kotlin/NativeKnarch, Kotlin跨平台数据库的一个非常早起的版本.很多地方还不成熟,尤其是对Android的支持,如何架构还在讨论总,在使用过程中,多线程也是个问题.
LIBRARIES & CODE SaveState保存状态的一个库,相较于Icepick支持Kotlin.
morph-bottom-navigation基于Bottom Navigation的一个库,有比较好看的动画效果.
gradle-maven-publish-plugin支持kotlin的maven发布插件.