gitextract_zcp2h22p/ ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── android-blog/ │ ├── Android性能优化系列/ │ │ └── readme.md │ ├── Google+ 团队的 Android UI 测试/ │ │ └── readme.md │ └── readme.md ├── androidweekly/ │ ├── Android中的人脸检测入门.md │ ├── Android性能案例研究续集/ │ │ └── readme.md │ ├── Kotlin for Android (II)创建一个工程/ │ │ └── readme.md │ ├── Kotlin for Android (III)-扩展函数与默认值/ │ │ └── readme.md │ ├── ListView或者RecycleView滚动时隐藏Toolbar-part-1/ │ │ └── readme.md │ ├── ListView或者RecycleView滚动时隐藏Toolbar-part-2/ │ │ └── readme.md │ ├── Square 开源库Flow和Mortar的介绍/ │ │ └── readme.md │ ├── kotlin-for-android简介/ │ │ └── readme.md │ ├── readme.md │ ├── 一个支持多设备的Android参考应用/ │ │ └── readme.md │ ├── 一种在android中实现MVP模式的新思路/ │ │ └── readme.md │ ├── 一种更清晰的Android架构/ │ │ └── readme.md │ ├── 使用Robolectric的参数化测试/ │ │ └── readme.md │ ├── 使用RxJava.Observable取代AsyncTask和AsyncTaskLoader/ │ │ └── readme.md │ ├── 使用buildSrc Gradle项目和Codemodel生成java代码/ │ │ └── readme.md │ ├── 功能测试框架 espresso/ │ │ └── readme.md │ ├── 在Android 5.0中使用JobScheduler/ │ │ └── readme.md │ ├── 在Android调试模式中使用Stetho/ │ │ └── README.md │ ├── 安卓字体渲染器/ │ │ └── readme.md │ ├── 安卓的模糊视图/ │ │ └── readme.md │ ├── 欢迎来到Android多进程时代/ │ │ └── readme.md │ ├── 深入了解Android Graphics Pipeline-part-1/ │ │ └── readme.md │ ├── 深入了解Android Graphics Pipeline-part-2/ │ │ └── readme.md │ ├── 深入了解Bundle和Map/ │ │ └── readme.md │ ├── 符合Material Design的抽屉导航效果/ │ │ └── readme.md │ ├── 让你的Android应用能使用多种主题-Part-1/ │ │ └── readme.md │ ├── 让你的Android应用能使用多种主题-Part-2/ │ │ └── readme.md │ └── 那些年我们错过的响应式编程/ │ └── readme.md ├── authorization.md ├── git简单使用教程.md ├── issue-10/ │ ├── Android如何直播RTMP流.md │ ├── Android进行单元测试难在哪-part2.md │ ├── Kotlin-for-Android-(IV):自定义视图和Android的扩展.md │ ├── readme.md │ ├── 使用Facebook-SDK为安卓应用添加Like按钮.md │ └── 将基于Dagger-1开发的项目迁移到Dagger-2中.md ├── issue-11/ │ ├── Android-Espresso测试框架介绍.md │ ├── Android进行单元测试难在哪-part3.md │ ├── Code Review最佳实践.md │ ├── readme.md │ ├── 听FaceBook工程师讲Custom-ViewGroups.md │ └── 详解Dagger2.md ├── issue-12/ │ ├── Android上MVP的介绍.md │ ├── Android自动截屏工具.md │ ├── Android进行单元测试难在哪-part4.md │ ├── MVP框架Mosby架构详解.md │ ├── readme.md │ ├── 当复仇者联盟遇上Dragger2、RxJava和Retrofit的巧妙结合.md │ └── 自动化Android开发.md ├── issue-13/ │ ├── Android进行单元测试难在哪-终.md │ ├── Square:从今天开始抛弃Fragment吧!.md │ ├── readme.md │ ├── 优化android-studio编译效率的方法.md │ ├── 创建-RecyclerView-LayoutManager-Part-2.md │ ├── 创建-RecyclerView-LayoutManager-Part-3.md │ └── 创建-RecyclerView-LayoutManager-Redux.md ├── issue-14/ │ ├── Android-Design-Support-Library.md │ ├── Android之WebRTC介绍.md │ ├── Design-Support-Library(I)-Navigation-View.md │ ├── MVVM 模式简介.md │ └── 新的测试注解.md ├── issue-15/ │ ├── 2015-Google-IO带来的新Android开发工具 .md │ ├── Android-C++引用计数介绍.md │ ├── Android-M的App-Links实现详解.md │ ├── facebook代码分析工具-infer.md │ ├── readme.md │ ├── 你可能漏掉的知识点-onResumeFragments.md │ └── 如何修复编译时的MultiDex崩溃.md ├── issue-16/ │ ├── Android一体机模式:规则限制.md │ ├── readme.md │ ├── 为什么你应该停止使用EventBus.md │ ├── 手动实现布局Transitions动画-第一部分.md │ ├── 手动实现布局Transitions动画-第三部分.md │ ├── 手动实现布局Transitions动画-第二部分.md │ └── 结合RxJava更简单地使用SQLite.md ├── issue-17/ │ ├── Android UI 自动化测试.md │ ├── Android中的帧动画.md │ ├── Android开发III-规范与性能.md │ ├── readme.md │ ├── 为什么需要在你的Crash报告中使用git-SHA.md │ ├── 使用RxJava从几个数据源中加载数据.md │ ├── 如何使用Android-Studio把自己的Android-library分发到jCenter和Maven-Central.md │ └── 当钢铁侠变得反应更快-RxJava.md ├── issue-18/ │ ├── Service测试.md │ ├── readme.md │ ├── 如何提高你的代码质量.md │ ├── 拖拽RecyclerView.md │ ├── 用组合代替继承能为Activity带来什么.md │ └── 还在用Toast?你Out啦,试试Snackbar吧!.md ├── issue-19/ │ ├── Android-UI自动化测试.md │ ├── RxJava-Observables单元测试.md │ ├── gradle技巧之语法浅谈.md │ └── readme.md ├── issue-20/ │ ├── readme.md │ ├── 在你开发应用前应知道的六件事情.md │ └── 检测和解决Android应用的性能问题.md ├── issue-21/ │ ├── Android数据绑定-再见Presenter,你好ViewModel.md │ ├── TextView预渲染研究.md │ ├── Yelp是如何通过Glide优化图片加载的.md │ └── 使用Mockito对异步方法进行单元测试.md ├── issue-22/ │ ├── Android-Activity测试.md │ ├── Android中的AOP编程.md │ ├── Binder框架解析.md │ └── 深入剖析Android网络开发库-part1.md ├── issue-23/ │ ├── Android-MVPR-架构模式-Part1.md │ ├── Android-MVVM模式.md │ ├── TextView的TextLayout.md │ ├── 使用Espresso进行UI测试.md │ └── 使用TDD的方式开发一个Hackernews客户端.md ├── issue-24/ │ ├── Android LayerDrawable 和 Drawable.Callback.md │ ├── Android双向数据绑定.md │ ├── Android设计与开发工作流.md │ ├── 使用Kotlin对ViewGroup中的View进行函数式操作.md │ └── 适用于Android的Flux架构.md ├── issue-25/ │ ├── Android主题动态切换开源库Prism基本原理1-核心功能.md │ ├── Android主题动态切换开源库Prism基本原理2-搭配ViewPager使用.md │ ├── Android主题动态切换开源库Prism基本原理3-搭配Palette使用.md │ ├── 一个内存泄漏引发的血案-Square.md │ └── 在Android Lollipop中使用Palette抽取Bitmap颜色.md ├── issue-26/ │ ├── 30分钟搭建一个android的私有Maven仓库.md │ ├── Android架构演化之路.md │ ├── Tinting drawables.md │ ├── 使用Systrace分析UI性能.md │ └── 在Android M中权限被拒绝时该如何处理.md ├── issue-27/ │ ├── 为什么不仅继承Observale而且使用Observable.create.md │ ├── 为你的应用加速 - 安卓优化指南.md │ ├── 使用Gradle将项目发布到Bitbucket上.md │ └── 开发你自己的Android授权管理器.md ├── issue-28/ │ ├── 数据绑定(Data Binding)-Part1.md │ ├── 数据绑定(Data Binding)-Part2.md │ ├── 数据绑定(Data Binding)-Part3.md │ ├── 数据绑定(Data Binding)-Part4.md │ └── 数据绑定(Data Binding)-Part5.md ├── issue-29/ │ ├── Chrome自定义Tabs-让App和Web之间的转场更平顺.md │ ├── 开发安全的Android应用.md │ └── 注意API21(Android5.0)上的EditText.md ├── issue-30/ │ ├── Android开发生僻却实用的知识点Part1.md │ ├── Android开发生僻却实用的知识点Part2.md │ ├── Flux and Android.md │ └── 通过硬件层提高Android动画的性能.md ├── issue-31/ │ ├── Android 中的依赖注入框架.md │ ├── Android中调试RxJava.md │ ├── Android应用架构.md │ ├── Android开发生僻却实用的知识点Part3.md │ ├── Espresso保存和恢复状态.md │ └── 使用ClassyShark压缩你的项目.md ├── issue-32/ │ ├── AppBarLayout的越界滚动行为.md │ ├── 剪刀手—Android平台上的图片裁剪库.md │ ├── 实现安卓6.0的直接分享(Direct Share )功能.md │ ├── 重构Plaid-响应式的MVP模式.md │ └── 高性能ListViews.md ├── issue-33/ │ ├── Android Libraries的依赖管理.md │ ├── 下雪动画.md │ ├── 使用ADB-Shell的效率和乐趣-part1.md │ ├── 如何自定义Lint规则.md │ └── 高效地配置okhttp.md ├── issue-34/ │ ├── Android逆向工程101 – Part 1.md │ ├── Android逆向工程101 – Part 2.md │ ├── Context是怎么泄露的Handlers & Inner Classes.md │ └── 在Android开发中使用RxJava.md ├── issue-35/ │ ├── 为什么我们要用fitsSystemWindows.md │ ├── 星球大战:原力觉醒或者用原力粉碎Android的视图.md │ ├── 用Transition完成Fragment共享元素的切换.md │ ├── 让EditText中的链接即可点击又可编辑.md │ └── 近乎通用的VectorDrawable.md ├── issue-36/ │ ├── Gradle小知识1.md │ ├── Gradle小知识2.md │ ├── Gradle小知识3.md │ ├── Gradle小知识4.md │ └── Gradle提示和使用技巧.md ├── issue-37/ │ ├── 使用ACTION_PROCESS_TEXT创建自定义文本选择动作.md │ ├── 使用RxJava缓存Rest请求.md │ ├── 在Android中使用并发来提高速度和性能.md │ ├── 如何理解RxJava中的Subjects(第一部分).md │ └── 更加强大的Dagger2.md ├── issue-38/ │ ├── Android逆向工程.md │ ├── Android高性能JSON数据解析.md │ ├── RecyclerView动画 第一部-动画效果是如何工作的.md │ ├── RecyclerView动画 第二部-幕后.md │ └── 从网页中触发Android原生的分享Intent.md ├── issue-39/ │ ├── Android Studio提示和技巧.md │ ├── Android dex分包导致的App启动速度下降.md │ ├── FragmentTransaction 与 Activity 状态丢失?.md │ ├── RxJava中repeatWhen 和 retryWhen 操作符的解释.md │ └── 在滚动列表中播放视频.md ├── issue-40/ │ ├── 权限 - 第一篇.md │ ├── 权限 - 第三篇.md │ ├── 权限 - 第二篇.md │ └── 权限 - 第四篇.md ├── issue-41/ │ ├── Service十件你不知道的事.md │ ├── 自定义CoordinatorLayout的行为.md │ └── 让你了解数据加载的生命周期.md ├── issue-42/ │ ├── IndeterminateProgressbar解析-Part 1.md │ ├── 剖析okhttp缓存机制.md │ ├── 在Activity配置改变时保存状态.md │ └── 提高NYTimes的启动速度.md ├── issue-43/ │ ├── IndeterminateProgressbar解析-Part 2.md │ ├── LayoutInflater.inflate() 方法剖析.md │ ├── 结合motion和Transition实现共享元素的酷炫动画.md │ ├── 通过CoordinatorLayout的Behavior拦截一切.md │ └── 避免Android应用冷启动问题.md ├── issue-44/ │ ├── Android-Reverse-Engineering-101-Part-4.md │ ├── Android-Support-Library-23.2.md │ ├── 使用Clean Architecture模型开发Android应用详细指南.md │ ├── 利用Retrofit和RxJava实现服务器轮询和出错重试.md │ └── 用RxJava替代EventBus.md ├── issue-45/ │ ├── Android圆弧整容之谜.md │ ├── IndeterminateProgressbar解析-Part 3.md │ ├── 使用反射到底会对性能造成多大影响?.md │ ├── 安卓Binder架构概述.md │ └── 简化复杂的视图层次.md ├── issue-46/ │ ├── Android-Reverse-Engineering-101-Part-5.md │ ├── IndeterminateProgressbar解析-Part 4.md │ ├── IndeterminateProgressbar解析-Part 5.md │ └── 尝试结合Mosby和Flow代替Fragment.md ├── issue-47/ │ ├── Building a Kotlin project.md │ ├── Kotlin在Android上令人惊叹的技巧.md │ ├── Layouts-Attributes-and-you.md │ └── 在Java和Android中使用Optional.md ├── issue-48/ │ ├── Android中的MVP-Part2.md │ ├── Parcelable vs Serializable对比.md │ ├── 为什么在Android开发中我仍然不想使用Kotlin.md │ └── 构建我的Presentation层.md ├── issue-49/ │ ├── Android上的网络响应日志技巧.md │ ├── AutoValue简介.md │ ├── Jack&Jill的缺点.md │ ├── 为什么在Android使用ClassLoader.getResourceAsStream会如此影响性能.md │ ├── 如何使用BottomSheet.md │ └── 深入研究AutoValue.md ├── issue-7/ │ ├── Android-Lollipop-update.md │ ├── Android-Support库22.1版.md │ ├── Android测试框架:Dagger2+Espresso2+Mockito/ │ │ └── README.md │ ├── Retrofit开发指南/ │ │ └── README.md │ ├── readme.md │ ├── 使用Robolectric和Android生成代码覆盖率报告/ │ │ └── readme.md │ ├── 在Activity中使用Thread导致的内存泄漏/ │ │ └── readme.md │ ├── 深入浅出Android新特性-Transition-Part-3a/ │ │ └── readme.md │ └── 深入浅出Android新特性-Transition-Part-3b/ │ └── readme.md ├── issue-8/ │ ├── Android 进行单元测试难在哪-序.md │ ├── Custom-Drawables.md │ ├── Support Libraries v22.1.0.md │ ├── 如何在Android上响应各种信息通知.md │ ├── 开始学习Material Design.md │ └── 检测Android应用的启动与关闭.md ├── issue-9/ │ ├── Android 10ms问题:关于Android音频路径延迟的解释.md │ ├── Android进行单元测试难在哪-part1.md │ ├── NotRxJava懒人专用指南.md │ ├── readme.md │ ├── 使用Android-Studio进行单元测试.md │ ├── 创建-RecyclerView-LayoutManager-Part-1.md │ └── 通过Jenkins并行完成UI的自动化测试.md ├── markdown简单教程.md ├── markdown转换教程.md ├── others/ │ ├── Android-M中Intent的解析/ │ │ └── readme.md │ ├── FaceBook推出的Android图片加载库-Fresco/ │ │ └── readme.md │ ├── Google推荐的图片加载库Glide介绍/ │ │ └── readme.md │ ├── InstaMaterial概念设计系列/ │ │ └── 实现Instagram的Material Design概念设计/ │ │ └── readme.md │ ├── VectorDrawable系列/ │ │ ├── VectorDrawable – 第一章/ │ │ │ └── readme.md │ │ └── VectorDrawable – 第二章/ │ │ └── readme.md │ ├── 上传拍下的照片、视频到服务器/ │ │ └── readme.md │ ├── 如何在本地搭建一个Android应用crashing跟踪系统-ACRA/ │ │ └── readme.md │ ├── 深入浅出Android 新特性-Transition-Part-1/ │ │ └── readme.md │ ├── 深入浅出Android 新特性-Transition-Part-2/ │ │ └── readme.md │ ├── 清晰的软件架构/ │ │ └── readme.md │ ├── 简化Android的UI开发/ │ │ └── readme.md │ └── 自动化截图-应用分发时的自动截图方案/ │ └── readme.md ├── rxjava/ │ ├── chap1.md │ ├── chap2.md │ ├── chap3.md │ ├── chap4.md │ ├── chap5.md │ ├── chap6.md │ ├── chap7.md │ └── chap8.md ├── software-architecture-patterns/ │ ├── chap-5.md │ ├── chapter01-BillonWang.md │ ├── chapter02-chaossss.md │ ├── chapter03-Mr.Simple.md │ ├── chapter04-dupengwei.md │ ├── readme.md │ ├── 软件架构模式.md │ └── 附录2015-4-11-charli.md ├── template.md ├── the-bad-guys/ │ └── readme.md └── 翻译项目协作流程.md