您现在的位置是:网站首页> 内容页

Android Weekly Notes Issue #317

  • 万发国际平台登录
  • 2019-01-29
  • 415人已阅读
简介July8th2018AndroidWeeklyIssue#317本期主要内容包括"重磅"的Udacity放弃RN(其实是因为他们RN写的那个Feature不要了)还包括如七

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:lineHeightapp:firstBaselineToTopHeightapp: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使用EspressoInstrument Test等整个跑下来不能超过三小时.

Compiler-based security mitigations in Android P

从Android P开始基于Clang编译器做了很多优化提升了稳定性降低了被攻击的风险.

如CFI (Control Flow Integrity) 技术主要是增加了虚函数指针偏移指向地址的检查如果发现指向非法地址就会终止编译.

IOS (Integer Overflow Sanitization) 技术会检测有符号或者无符号的Integer在算法中溢出的问题并且优化后运用到了一些库的编译中如libui libnllibexif等...

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的一个第三方组件.

1 0 9)

文章评论

Top