Rocko's blog

Live in the moment


Google Git-Repo (Android)多仓库项目管理

前言

项目模块化/组件化之后各模块也作为独立的 Git 仓库从主项目里剥离了出去,各模块各自管理自己的版本。正常 Android 项目,各剥离出去的子模块仓库则通过 Maven 仓库 来管理,然后和引入第三方库一样依赖到主项目里。这种状态下的项目迭代带来的问题会是:需要频繁发布子模块的 版本并需要把修改的版本提交 Merge Request 到主模块里,尤其像我们一周一版的快速迭代的情况下,问题尤为凸显。此外还有个问题就是 Debug/断点 会变得不太方便,因为可能子模块的源码并未发到 Maven 上。

Read more...

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

前言

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

Read more...

科学上网的各种姿势

有墙的地方,就有梯子。有其它好的姿势的麻烦在后面留下言,我会更新上来。 科学上网可能会受到不同运营商和所处地区的影响。

Read more...

AndroidDev站点推荐-Issue#1

Android-Dev-Bookmarks 项目目前可以生成书签文件导入到浏览器中了,ADB 站点上的内容也是一样的,方便在线浏览。现在内容更新开始按期发布同时也会有个简短的介绍,内容逐渐增多比较难直接看出站点的主要内容,过一遍介绍也可以留个印象。

下面是这期更新的内容:

Read more...

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 放出正式版了。

Read more...

High一下

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

Read more...

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

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

Read more...

【译】NotRxJava懒人专用指南

如果你是一位 Android 开发者,那么这些天你可能已经听到或看到一些关于 RxJava 满天飞的宣传了。RxJava 是一个能让你摆脱编写一些复杂繁琐的代码去处理异步事件的库。一旦开始在你的项目中使用,你会对它爱不释手的。

然而,RxJava 有个缺陷,它需要一个陡峭的学习过程。对于一个从未接触使用过 RxJava 的人来说,是很难一次就领会到它的精髓所在的,对于它的一些使用方法你也可能会很迷惑。在项目中使用它意味着你需要稍微地改变一下你的代码编写思路,另外,这样的学习曲线会使得在项目中因为大规模的使用RxJava而引发一些问题。

当然,关于如何去使用 RxJava 已经有许多的教程和代码范例了。感兴趣的开发者可以访问 RxJava 的官方 Wiki,里面有关于什么是 Observable 以及它和 Iterable、Future 之间关系的很好的解释。Wiki 里有一篇很有用的文章:How To Use RxJava,这篇文章包含怎么去发送事件流并且打印出它们的介绍以及它的样例代码。

但我们要明确的是在还没有学习什么是 Observable 的前提下了解 RxJava 用来解决什么问题以及它是怎么帮助我们组织起异步代码的。

我这篇文章的定位就是 RxJava 官方文档的“前篇”,读完这篇文章能更好地去理解 RxJava 所解决的问题。文章中也有一个小 Demo,就是自己怎么去整理那些凌乱的代码,然后看看我们在没有使用 RxJava 的情况下是怎么去遵循 RxJava 基本原则的。

所以,如果你仍有足够的好奇的话就让我们开始吧!

Read more...
1 of 3 Next Page