Android Robolectric 加载运行本地 So 动态库

http://rocko.xyz/2016/11/27/Android-Robolectric-加载运行本地-so-动态库/

前言

Robolectric 是 Android 的单元测试框架,运行无需 Android 真机环境直接运行在 JVM 之上,所以在 test case 运行速度效率上有了很大提升,接近于 Java JUnit test(JUnit test > Robolectric >> androidTest)。不过框架本身并不支持 so 本地库的加载使用,加载时会直接报错,因为实际上运行环境是电脑机器,而我们打出的 so 文件是给手机上用的所以当然会报错。虽然在 GitHub 上很多人问过关于使用 so 的问题但基本都建议说不要在单元测试中去加载本地库,这在原则上是要这么做,但可能有些项目中做起来就有些困难了,比如在代码结构不够好、依赖耦合较大或者本身就对 so 库依赖很大的情况下。所以下面说说在项目中 Robolectric 要怎么解决需要加载运行本地 so 库这个问题。

阅读全文

MVVM_Android-CleanArchitecture

前言

“Architecture is About Intent, not Frameworks” - Robert C. Martin (Uncle Bob)

Uncle Bob 的这句话套在 MVVM 上也是适用的, MVVM 也仅仅是架构模式(Architectural pattern),其有一套自己的理论概念(pattern)而不是规定的具体实现(或 Frameworks)。早之前在知乎上相关问题的回答(android UI设计MVVM设计模式讨论?)中也简单提到过 MVVM 了,M-V-X 的关系如上图,那么这一次博主把 Fernando Cejas(android10)Android-CleanArchitecture 项目中的 MVP 实现重构成了用 MVVM 来实现。所以看这篇文章最好是先搞清了 Fernando Cejas(android10)Android-CleanArchitecture sample app 和对应的两篇文章(见参考)。整个历程也算比较愉快,没什么不良反应,这篇文章理所当然会重点说说 MVVM 的实现、 Data Binding 等相关的东西。那为什么拥抱 MVVM 呢。当然是 Google 推出官方的 data binding 啦,下一次的 Android MVVM 热潮应该就是 data binding 放出正式版了。

阅读全文

High一下

发现博客访问不了,原来是 GitCafe Pages 又挂了,而且 A 记录也不能用了,所以又得把博客迁回 Github 了。顺便把 High一下 优化了下。基本是直接拿耗子叔的 酷壳 上的 High 一下来用的,存在点击重复播放的问题,而且歌曲只有一首,所以得加以优化下:加了几首歌点击随机播放;修复点击重复执行播放的问题,重新点击后动画重新开始。原来的代码右键 High 一下 审查元素 就看得到了,修改后的代码如下:

阅读全文

【译】解决共享元素在系统UI上绘制的问题

目前为止,我在使用 Activity transitions 中遇到的一个比较烦人的小问题:共享元素会部分地覆盖掉 Status/Navigation/Action Bar,一旦开始过渡动画,共享元素就会很唐突地从系统 UI 下 弹出。这一不和谐的表现可以看看下面这个视频:

阅读全文