2017-2-27
  
Android 组件化模块化开源框架,包括 Activity,Fragment,View,Application 公用设计。 详情可以查看简书介绍 http://www.jianshu.com/p/94a05b996d78

2017-2-7
  
使用了 RxJava 有一段时间了,深深感受到了其“牛逼”之处。下面,就从 RxJava 的基础开始,一步一步与大家分享一下这个强大的异步库的用法!

2017-2-4
  
首先,你可能看到的是一篇假的插件化方案。因为 Android 开发发展到现在出现了很多插件化的方案,但是目前还没发现哪个方案是通过修改插件的 dex 文件来实现的,估计很大可能性是别人在研究这个方向的时候发现是条死路吧。本人研究这个完全是出于好奇心,想看看这条路上到底有多少坑。

2017-2-1
  
说起 okhttp,想必各位老司机们一定都不会陌生,但是 okhttp 还可以进行 websocket 通信你造吗?下面就让我们一起来深入浅出 okhttp websocket 吧!

  
然后承接上一篇讲到的关于 okhttp websocket 的使用,今天将深入源码进一步了解它的运作过程。

  
基于 java 开发的 android 应用由于其语言的特性,所以很容易被反编译,虽然 android 提供了 proguard,但是也只是增加了源码阅读的难度,其中业务逻辑依旧可以分析得出。有些人通过各种破解手段将 apk 文件破解、反编译,然后加入广告、病毒代码,重新打包投入市场,不明真相的用户将带病毒广告的 apk 下载下来,甚至因此造成利益损失。

2017-1-29
  
进一步简化 okhttp websocket 的使用,并提供断线重连机制。使用 websocket 就是这么简单

2017-1-22
  
图片选择器是 Android 开发中会经常用到的一个功能,特别对于社交类的应用,比如头像设置,比如发图片。自然 ImagePicker 的轮子很多,今天介绍一个功能强大的轮子 SImagePicker

2017-1-14
  
Android 开发中,总会遇到大量的繁杂模版代码,重复无味的样板方法,冗长杂余的套路写法,占据了大量的开发时间,并且容易手误出错,极大地降低了编程效率和代码的优雅。

现在,我们通过几个小例子,讲解在 TMVP 中,如何通过泛型解耦和精简代码,达到高度封装简洁优雅的效果。


2017-1-12
  
项目需求讨论-Android App 升级

2017-1-11
  
购物车旋转控件 - 自带闪转腾挪动画 的按钮

2016-12-22
  
Android Blog 周刊

2016-12-20
  
滴滴海外地图选型及设计、漫游网络处理、多业务下的 Android 项目组件化演进等。

2016-12-19
  

快传是模仿 茄子快传来实现的,主要是是通过设备间发送文件。 文件传输在文件发送端或者是文件接收端通过自定义协议的 Socket 通信来实现。 由于文件接收方和文件发送方都是文件的缩略图 这里采用了 header + body 的自定义协议, header 部分包括了文件的信息(长度,大小,缩略图), body 部分就是文件。

目前已经实现了:

  1. Android App 端 到 Android App 端的文件传输
  2. 网页传模块的功能。(通过在 Android 端架设微型 Http Server 来实现跨平台文件传输)

  
Volley 简单使用 OKHttp 简单介绍 Retrofit

2016-12-15
  
值得每个人收藏的《下拉刷新与加载更多大全》

2016-11-13
  
RecyclerView 是一个高度的解耦,异常的灵活的 View,通过设置它提供的不同 LayoutManager,ItemDecoration , ItemAnimator 实现令人瞠目的效果。

2016-11-9
  
目前已完成部分是学习贝塞尔曲线最完整最全面的资料。

  
Android, Coding, Programming

2016-11-2
  
所有 PPT 下载地址:https://github.com/QConChina/QConShanghai2016

2016-10-28
  
模仿作品:LookLook 开源项目

2016-10-23
  
Android Java / Kotlin 程序员开发调试工具。Debug Bottle 的所有功能均建立在 App 的 debug 版本中,不会对 release 版本产生任何影响。Debug Bottle 旨在提高开发效率,把控 App 质量。

2016-10-19
  
微影,一款纯粹的在线视频 App,基于 Material Design + MVP + RxJava + Retrofit + Realm + Glide

2016-10-17
  
分状态栏透明,状态栏上色,已经一些参数的分析。

2016-9-26
2016-9-23
  
带着问题一步一步深入分析 Android 中的 SharedPreferences 源码,最后得出问题的答案。

2016-9-2
  
蚂蚁金服开源的 Android 编译辅助工具 Freeline,将之前漫长的编译过程缩短到秒级。集 Buck 和 Layoutcast 的优点,跨平台、全版本支持。

2016-8-31
  
MVP,RxJava +Retrofit+okhttp 完美结合,遵循材料设计,5.0 高级特性,RecycleView + CardView

2016-8-30
  
android 中级攻城狮学习资源

  
android 中级程序员阅读源码必备姿势

2016-8-28
  
mpush,是一款开源的实时消息推送系统,采用 java 语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点。同时也是少有的可商用的开源推送系统。

2016-8-18
  
Android 4.1 对于 UI 绘制性能提升项目的介绍,包括 Vsync、Triple Buffer、Choreographer。 通过类似时钟中断的 Vsync 信号通知 CPU 实时处理; 通过 Triple Buffer 解决 16ms 内 CPU、GPU 未处理完导致延时问题; 通过 Choreographer 实现不同 Vsync 信号达到时,不同级别绘制回调的统一中控处理,如 CALLBACK_INPUT 优先级最高,CALLBACK_ANIMATION 优先级其次,CALLBACK_TRAVERSAL 优先级最低。

2016-8-12
  
介绍了多种 App 进程保活手段及适用范围

2016-8-11
  
Security Guide for Developers (实用性开发人员安全须知)

2016-8-5
  
介绍 Android N 的混合编译运行模式,以及它对热补丁机制的影响

2016-7-29
  
展示了如何构建一个包括基础服务(SpringMVC),运营配置系统(JS)以及 Android 客户端的小型系统(包括源码及讲解),对全栈有兴趣的可以拿来学习。

  
-最佳实践理论总结 -最佳实践 Junit+mockito+powermock+robolectric+jenkins 搭建单元测试及自动化测试。

2016-7-28
  
为了方便自动分析内存解决 Stop Allocation Tracking 卡死的问题,从 Android Studio 源码和 Dalvik 虚拟机源码分析 Allocation Tracking 的过程,从而达到不影响手机本身性能的情况下获取申请对象信息

2016-7-25
  
An overview of ES6 features.

  
ES2015 [ES6] cheatsheet containing tips, tricks, best practices and code snippets

  
详细介绍了 JS 中调用 OC 方法的流程。在 JS 层和 C 层都有一个 Bridge,里面保存了相同的模块配置表,包含了 OC 暴露给 JS 的方法信息。JS 调用 OC 方法时,通过 Bridge 里的配置表查询得到 Module ID、Method ID、Callback ID 等传递给 OC,OC 通过模块配置表找到对应的方法执行后,调用回调。

需要注意的是 JS Bridge 并不会主动把数据传递给 OC Bridge,而是添加到一个队列中,当 OC 过来调用 JS 任意方法时,再把这个队列返回给 OC。具体如下图:


2016-7-22
  
Android单元测试之Mockito浅析

  
Google I/O 2016 笔记之Layout新世界-ConstraintLayout

  
Android开发中的图像压缩是一个很重要的部分。而这篇文章会让我们从另外一个角度来认识Android平台下的图像压缩和优化。

  
Espresso 是 Google 官方提供的一个易于测试 Android UI 的开源框架 .

  
从底层框架、学习成本、易用性、性能、工具链等多方面对 React Native 和 Weex 进行对比

2016-7-21
  
告别繁琐的ViewPager指示器开发,轻轻松松使用MagicIndicator打造各式各样的指示效果。

2016-7-18
  
ArchSummit 深圳 2016 Slides 下载合集,各端都有些不错的 Share

2016-7-15
  

一个十几年开发经验的老司机对一些热点如 OO 与 FP、微服务、重构的看法,很多观点不谋而合。如:

  1. 设计的基本原则一直通用,不分语言。
  2. FP 早期能更快速完成任务,但 OO 比 FP 更适合复杂场景和大工程。
  3. 微服务的拆分粒度是个需要把握的度,过大不能充分解耦,过小则破坏了问题本身整体性同时使得系统复杂。
  4. 重构更多是系统模块层次结构性的重构,系统重新设计重新划分模块,对于系统内重构因为对外部职责单一所以可整体替换。

2016-7-14
  

介绍了 Facebook 用 FlatBuffers 优化信息流等,介绍 FlatBuffers 的存储格式及 FlatBuffers 的好处,包括:

  1. 解析速度更快
  2. 内存占用更少
  3. 更灵活,可单独快速读取部分属性不用群不解析
  4. 跨平台、库很小、编译时类型校验

  
FlatBuffers 是一个高效的跨平台序列化类库,效率远高于常用的 JSON,可以在 C++、C#、C、Go、Java、JavaScript、PHP 和 Python 中使用。是 Google 开发的,是为了应用在游戏开发,以及其他注重性能的应用上。

  
从总体设计和原理上对 ImageLoader Picasso Glide 几个图片缓存进行对比,介绍他们各自的特性以及某些特性上的实现。

2016-7-13
  

分享了携程目前移动端的网络服务情况。分析了网络服务可能的问题以及对应的优化。优化手段包括:

  1. 优化 DNS 解析和缓存
  2. 根据网络质量动态改变网络请求策略及配置
  3. 提供网络服务优先级和依赖机制
  4. 提供网络服务重发机制
  5. 减少数据传输量
  6. 通过 CDN 加速、动静资源分等手段优化海外网络性能

  
《ECMAScript 6 入门》是一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新增的语法特性,网站:http://es6.ruanyifeng.com/

  
Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules.

2016-7-12
  
通过将修改后的类重新打一个 Patch Dex,并在 ClassLoader 加载 Dex 前将 Patch Dex 插入到 Dex 数组前面实现热修复,并解决类检查的 Preverify 问题。

此方案因为去掉了 Preverify,导致 Verify 与 Optimize 延迟到类加载时刻,会有一定性能损耗。


2016-7-8
  
IntentService 是比较少使用的,如果你没听过也不意外,就像 HandlerThread 很多开发者没用过或没听过,不过我也仅仅是在demo中使用。Google 为方便开发者使用,提高开发效率,封装了 IntentService 和 HandlerThread。HandlerThread 继承自 Thread,内部封装了 Looper。那 IntentService 呢?

2016-7-5
  
组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发。 插件化开发和组件化开发略有不用,插件化开发时将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk(组件化的每个模块是个lib),最终打包的时候将宿主apk和插件apk分开或者联合打包。

  
豌豆荚被阿里收购,致敬这个 Google Style 的公司。

经过六年,我相信的很多事情仍然没有改变。是的,我碰了不少钉子,明白努力不一定会有回报,好心也不一定能得到所有人的理解和认可... 但我并不想因此吸取什么「在中国不能这样或那样做事情」的教训。即使更难,我仍然会按照我认为对的方式去继续向前,这样子才能问心无愧。

创业没有终点,如果是一个使命驱动的团队或个人,根本没有「退出」这个选项。不管是最初创业,还是 2013 年选择保持独立、扩张品类,还是今天做出的选择,我们都会问自己,哪种选择才能帮助我们更好地达成我们的使命?成功与否,我始终认为要看自己追求的是什么,而不是某个世俗的标准。何况,即使按世俗的标准,我和我们的团队也是非常成功的,我们应该为自己创造的一切感到自豪。再过几年,豌豆荚拥有了更大的规模和影响力,我会很高兴在今天做出了这样的决定,让它发展得越来越好。

生命短暂,我还希望能创造出更有影响力的作品,继续专注在我真正 passionate 的事情上,帮更多的对世界保持兴趣的人去发现更大更美好的世界。也许在外界看起来,这些事情会更... 你懂的,但我觉得如果我没有做这些事情,哪怕赚了再多好几个数量级的钱,当我老去的时候,才会「因碌碌无为而感到悔恨」。那才是真正意义上的失败。


  
详细盘点了主流的开源数据库及存储方案和背后的设计思想以及适用场景,包括 MySQL、PostgreSQL、嵌入式存储引擎、memcached、Redis、Twemproxy、MongoDB、HBase、Cassandra、Spanner、中间件等等

2016-7-4
  
关于国内几大互联网创始人、管理层、投资人的控制权争夺,以及如何保持创始人或者管理层的控制权建议,如:

网易的创始人,管理层,大股东丁磊一人独揽;

新浪的毒丸计划和管理层回购;

百度的牛卡方案,以及京东的AB股方案,同股不同权;

阿里的合伙人制度和投资方的授权。


  
天猫热修复对于启动阶段 Crash 的解决方法

2016-6-30
  
由微信读书的 bang 开源的 JSPatch 是国内应用最广泛的 iOS 热修复方案,bang 详细介绍了 JSPatch 的起步、发展和下一步计划。替代早期的嵌入 Lua 引擎的 waxPatch,不断优化。

2016-6-27
  
介绍了热补丁的作用,如在线修复 Bug、灰度发布、远程调试等。

全面对比了支付宝的 AndFix、QZone 的 Classloader 方案优缺点,如 AndFix 无法替换类,无法新增变量,兼容性麻烦,QZone 的方案对性能有影响同时 patch 包可能过大。同时简单介绍了他们自己的方案——全量替换新的 Dex 的实现及优缺点。

信息量很大,最后参考的文章里也有些不错的信息。


2016-6-23
  
React Native 的 ES5 ES6 混用会让新手不知所然,如:

require VS import

React.createClass VS extends Component

module.exports VS export default

getInitialState VS constructor


2016-6-22
  
利用 Java 的 Instrumentation 修改 Eclipse Plugin 运行时行为——通过 ASM 框架修改 Android 打包时的字节码,从而实现 App 日志手机,比如网络性能监控、Activity 生命周期监控等

Android 开发经验分享
Android 开发经验分享