Android 开发周报:模块化架构思考、高仿微信开源项目实践

  • 郭亮

2017 年 2 月 16 日

话题:移动Android语言 & 开发架构

新闻

  1. 《Google 手机操作系统二月份统计数据:牛轧糖份额首度超过 1%》:Google 手机操作系统二月份统计数已经出炉,这个月的数字显示最新的 Android 操作系统份额终于突破 1%。这些数字显示,牛轧糖 7.1 的份额为 0.3%,牛轧糖 7.0 的份额为 0.9%。牛轧糖 7.0 二月份份额比一月份提升 0.4%,牛轧糖 7.1 的份额提升 0.1%,两个牛轧糖版本现在合并份额为 1.2%,比上个月增加 0.5%。

  2. 《Google 发布 Android Things 开发者第二预览版》:Google 在 2 个月前发布了 Android Things,该操作系统旨在为物联网设备提供“Android 之力”的加持。今天,该公司又发布了第二个开发者预览版。新编译版本中包含了大量新特性,比如支持英特尔 Edison 和树莓派 3 硬件抽象层的 USB 音频(以及英特尔的 Joule 物联网开发板)。

  3. 《Android 的移动网络快速共享功能正式上线了》:之前仅在少数 Pixel、Nexus 手机上出现的全新快速手机网络共享功能(Instant Tethering),现在终于正式向所有 Pixel、Nexus 设备开放了。不过,能够自己充当上网主机给其它设备提供连线的还是只有运行 Nougat 的手机,仍在使用 Marshmallow 的手机和 Pixel C、Nexus 9 之类的平板,暂时还是只能接入享用别人的网络而已。

教程

  1. 《Android 架构思考 (模块化、多进程)》:关于模块化 (组件化) 这个问题,大部分开发者可能都认真的思考过。随着项目的开发,业务不断壮大,业务模块越来越多,各个模块间相互引用,耦合越来越严重,同时有些项目还伴随着子应用单独包装推广,影子应用单独发布等等需求,重新调整架构迫在眉睫。作者介绍了自己公司项目的演进过程,文章写的很详细,架构也很实用,对大家合理架构项目很有帮助,强烈推荐大家阅读。

  2. 《深入剖析 Android 中的 ArrayMap》:数据集合在任何一门编程语言中都是很重要的一部分,在 Android 开发中,我们会实用到 ArrayList,LinkedList,HashMap 等。其中 HashMap 是用来处理键值对需求的常用集合。而 Android 中引入了一个新的集合,叫做 ArrayMap,为键值对存储需求增加了一种选择。本文深度剖析了 ArrayMap 的实现原理。

  3. 《归纳 AOP 在 Android 开发中的几种常见用法》:在软件业,AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP 是 OOP 的有力补充。玩好 AOP 对开发 App 是有很大的帮助的,本文详细介绍了 AOP 在 Android 开发中的常见用法。

  4. 《混淆的另一重境界》:众所周知,我们开混淆打包后生成的 apk 里,Activity、自定义 View、Service 等出现在 xml 里的相关 Java 类默认都会被 keep 住,那么这对于 app 的保护是不足够好的,Mess 就是来解决这个问题,把即使出现在 xml 文件中的 Java 类照样混淆。本文详细介绍了 Mess 的使用方法。

  5. 《Android 教你一步步搭建 MVP+Retrofit+RxJava 网络请求框架》:MVP(Model View Presenter)其实就是一种项目的整体框架,能让你的代码变得更加简洁,说起框架大家可能还会想到 MVC、MVVM。Retrofit 是一个类型安全的用于 Android 和 Java 网络请求的客户端,其实就是一个封装好的网络请求库。本文作者详细介绍了如何使用 MVP+Retrofit+RXJava 的技术方案来搭建 Android 基础开发框架。

开源项目

  1. LQRWeChat:本项目高仿微信 6.3.31,使用网易云信 SDK 3.2.0 版本完成主要的聊天功能(单聊、群聊)、好友关系管理、群组管理等功能。重要的是,作者还是一名在校学生。

  2. ListenerMusicPlayer:一款优雅的遵循 Material Design 的开源音乐播放器,UI 参考腾讯轻听音乐播放器, 使用 Lastfm Api 与酷狗歌词 Api。项目架构采用 mvp-clean,基于 Retrofit2 + Dagger2 + Rxjava + RxBus + Glide。

  3. SopCastComponent:这是一个由纯 java 编写的项目。整个项目完成了采集、视音频处理、编码、数据发送前处理、数据发送的功能。整个项目支持 flv 封包,rtmp 上传,当然也向外面提供了封包和上传的相关接口。

  4. BadgeView:一个可以自由定制外观、支持拖拽消除的 MaterialDesign 风格 Android BadgeView。

  5. CoordinatorTabLayout:CoordinatorTabLayout 是一个自定义组合控件, 可快速实现 TabLayout 与 CoordinatorLayout 相结合的样式继承至 CoordinatorLayout,在该组件下面使用了 CollapsingToolbarLayout 包含 TabLayout。


感谢徐川对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

移动Android语言 & 开发架构