Android Weekly Notes Issue #317
July 8th, 2018
Android Weekly Issue #317
本期主要内容包括"重磅"的Udacity放弃RN(其实是因为他们RN写的那个Feature不要了),还包括如七部使用Google Page Lib,如何用Room设计与创建可维护的数据库等Code Guide的文章,以及Android P字体渲染,放大镜,Google新版Universal Music Play Sample,还有Retrofit如何工作,如何通过Kotlin Extension Generation来改善Dagger Butterknife使用体验,等等.
ARTICLES & TUTORIALS
State of Kotlin
Kotlin状态的一些列数据,包括它的使用率,渗透率,在项目中的应用率等多种多样的数据,并且可以订阅.
一切数据表明,Kotlin在过去的一年中发展迅速,使用量Double,并且好评如潮.
How does Retrofit work
文章讲述了Retrofit如何工作,实际上是通过Proxy而非Processor去生成代码来实现的.文章表示在运行速度与编译速度上的Compromise是一个值得思考的问题.
Exploring Android P: Magnifier
Android P提供了放大镜功能,并且TextView默认就实现了.
国内用户应该不是很陌生,几年前国内的一些大Android浏览器厂商在WebView里面也有类似的功能,不过主要是Android copy了 iOS的默认属性...
Tracking Android app metrics
文章介绍了CI上使用StatHat上传APK的一些数据,比如size等,然后发现问题后通过Danger给Github的PR上面发出报警.
这两个都是Ruby的应用.
Kotlin extension function generation
文章介绍了自己给Dagger与Butterknife写的ktx.
由于Dagger使用了生成文件进行注入,所以必须先编译一边才能通过Compiler生成文件,使用起来不便.
而ButterKnife使用了反射通过类名将自己Generate的辅助类在运行时创建,我们想消除这个反射.
这些原因都因为Processor只能生成文件,而无法改变已有文件.
所以作者使用了Kotlin Extension,首先在Lib里定义了一些Mock的接口,所以编译之前可以调用这些空实现.而在编译过程中,Compiler会生成对应的扩展方法,这样Dagger与Butterknife的问题都得以解决.
What's new for text in Android P
Android P在TextView上下了狠功夫,增加了很多功能.
- PrecomputedText
复杂字体Font在显示的时候实际上90%的时间都耗费在Measure计算上, 可以在后台线程通过PrecomputedText计算,然后在UI线程set
- Magnifier
放大镜,上篇有提到.TextView自己默认实现了.
- Smart Linkify
TextView方按选中可以通过Google的ML处理解析,提供可能相关的应用显示在Copy Cut Paste旁边,这一切都是通过TextClassifier实现的.
- Line Height & Baseline Alignment
提供了几个Attribute控制文字行高,以及baseline的top与bottom margin.
app:lineHeight
app:firstBaselineToTopHeight
app:lastBaselineToBottomHeight
React Native: A retrospective from the mobile-engineering team at Udacity
Udacity也放弃了RN,看了整片博客,感觉是他们可能只是为了凑个热度.
首先他们放弃的最主要原因是他们就一个Feature用了RN,而且当时也是因为它很独立,然后尝试了RN,现在这个Feature不用了,就删掉了.
然后他们的Android Dev细数了RN的十宗罪,但是都是我们大概能想到的.
比如实际上两个平台尤其android还是需要通过改code来修bug或者特殊需求,RN与native互通麻烦,RN导致CI编译长,包增大,启动变慢,RN文档欠缺,代码变更太快,自身bug多,不同设备不同表现,遇到问题常常需要改源码等等等等.
而之所以当初要使用,主要原因是为了省事,可惜后来发现还是费事了,所以以后再也不会考虑RN了.
Automated testing will set your engineering team free
作者介绍了他们的应用是如何保证质量的,答案就是写测试,一般feature手工只测一遍,剩下就得自动化测试.
测试他们分为三类, UT是开发来写, 基本覆盖每一个函数,集成测试用Robolectric是QA负责来写,End to End test使用Espresso,Instrument Test等,整个跑下来不能超过三小时.
Compiler-based security mitigations in Android P
从Android P开始基于Clang编译器做了很多优化,提升了稳定性,降低了被攻击的风险.
如CFI (Control Flow Integrity
) 技术,主要是增加了虚函数指针偏移指向地址的检查,如果发现指向非法地址就会终止编译.
IOS (Integer Overflow Sanitization
) 技术会检测有符号或者无符号的Integer在算法中溢出的问题,并且优化后运用到了一些库的编译中,如libui, libnl,libexif等...
7 steps to implement Paging library in Android
文章介绍了如何使用Google Architecture Component里面的Page来实现分页加载.
总共有七步,关键是实现PageKeyedDataSource接口封装MutableLiveData. 实现DataSource.Factory将DataSource封装成Factory.
然后就可以通过LivePagedListBuilder来生成数据了.
A New Universal Music Player
鉴于大家对Google的Universal Music Player的喜爱,推出V2版,采用Kotlin与MVVM的架构,但是还有一些小功能没有加进来.
Publishing your library to jCenter from Android Studio
作者在网上找如何上传jcenter,找了很多说法不一的,所以一怒之下自己写了一篇.
Maintainable Architecture – Five Day Forecast Data Layer
作者通过实现一个天气预报软件的数据库,来介绍如何设计以及使用正确的方案来确保软件架构正确与维护的成本.
PS:使用的是Room.
LIBRARIES & CODE
RecyclerView-FastScroller
Kotlin写的快速滑动的滚动条,按照首字母.
vector-analog-clock
Vector实现的石英表,适配各种屏幕.
androme
可以将带JS的HTML5页面转换为多个Android Layout.
android-UniversalMusicPlayer
Google重写的UAMP
LazyDatePicker.
替代系统DatePicker的一个第三方组件.
Android Weekly Notes Issue #317的更多相关文章
- Android Weekly Notes Issue #230
Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...
- Android Weekly Notes Issue #227
Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...
- Android Weekly Notes Issue #237
Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...
- Android Weekly Notes Issue #229
Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...
- Android Weekly Notes Issue #221
Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- Android Weekly Notes Issue #236
Android Weekly Issue #236 December 18th, 2016 Android Weekly Issue #236 本期内容包括: Google的物联网平台Android ...
- Android Weekly Notes Issue #235
Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...
- Android Weekly Notes Issue #234
Android Weekly Issue #234 December 4th, 2016 Android Weekly Issue #234 本期内容包括: ConstraintLayout的使用; ...
随机推荐
- css样式大全(整理版)
字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 {font-style: obl ...
- Linux内核裁剪的具体步骤
在menuconfig中配置: 详细介绍内核配置选项及删改情况 第一部分:全部删除 Code maturity level options ---> 代码成熟等级选项 []Prompt for ...
- 鸟哥的linux私房菜服务器架设篇之准备工作和网络基础
架设服务器的基本功课 1基础网络的基本概念,以方便进行联网和设定及除错 2熟悉操作系统的简易操作:包括登录分析,账号管理,文本编辑器的使用等等的技巧 3信息安全方面:包括防火墙与软件更新方面的相关知识 ...
- Drools学习笔记
Drools是一款基于Java的开源规则引擎 实现了将业务决策从应用程序中分离出来. 优点: 1.简化系统架构,优化应用 2.提高系统的可维护性和维护成本 3.方便系统的整合 4.减少编写“硬代码”业 ...
- 压缩软件Snappy的安装
1.下载源码,通过编译源码安装 tar -zxvf /home/zfll/soft/snappy-1.1.2.tar.gz cd snappy-1.1.2 ./configure make sud ...
- 【前端阅读】——《活用PHP、MySQL建构Web世界》摘记之设计技巧
二.设计技巧 Programming的习惯因人而异,这里只提供一些经验,可以参考. 1.利用Include模块化你的程序代码 Include函数基本上说:就像是把另一个文件(HTML或者PHP程序)读 ...
- linux中脚本扑捉(trap)信号问题
扑捉ctrl+c信号: #!/bin/bash trap ; function trap() { echo "You press Ctrl+C."; echo "Exit ...
- CentOS---网络配置具体解释
一.配置文件具体解释 在RHEL或者CentOS等Redhat系的Linux系统里.跟网络有关的主要设置文件例如以下: /etc/host.conf 配置域名服务client的控制文件 ...
- AWK 思维导图
完整的AWK思维导图 文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing
- 决策树之 C4.5
C4.5 是对 ID3 的一个优化,它依据信息增益率来进行属性选择. 关于决策树.请參见:http://blog.csdn.net/bone_ace/article/details/46299681 ...