写点什么

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

2017 年 2 月 16 日

新闻

  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 )关注我们。

2017 年 2 月 16 日 18:005711
用户头像

发布了 121 篇内容, 共 35.1 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

国外的公司都是如何对待大龄程序员的?在国内该如何应对?

Java架构师迁哥

区块链 | 最火的七大职业了解一下

CECBC区块链专委会

区块链技术人才

为什么有了SOA,我们还用微服务?

架构师修行之路

微服务

做好微服务架构,并非易事!!

架构师修行之路

微服务

再看传记:试图进入和理解他人的生活

Nydia

拜托,学妹,别再问我怎么自学 Java 了!和盘托出

沉默王二

Java 自学编程

架构师训练营 1 期第 4 周:系统架构 - 总结

piercebn

极客大学架构师训练营

十一长假我肝了这本超硬核PDF,现决定开源!!

冰河

项目管理 jenkins 互联网工程 持续发布

OKR-VUCA时代目标管理利器实践分享

张兆东

个人数字人民币钱包即将亮相

CECBC区块链专委会

央行 数字人民币

CPU 执行程序的秘密,藏在了这 15 张图里

Java架构师迁哥

LeetCode题解:94. 二叉树的中序遍历,使用栈,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

肝到头秃!阿里爆款的顶配版Spring Security笔记

周老师

Java spring 编程 程序员 架构

服务器的发展历史

德胜网络-阳

典型的大型互联网系统使用了哪些技术方案和手段,主要解决什么问题?

极客海

一个草根的日常杂碎(10月7日)

刘新吾

随笔杂谈 生活记录 社会百态

第三周作业一

dll

OpLog4j

Geek_746da6

Programmatic Navigation using SwiftUI| 使用SwiftUI进行程序化导航

Daniel

翻译之深入注释俄罗斯民间故事的语料库,以实现对俄罗斯形式主义理论的机器学习

AI代笔

Spring 学习笔记(二)Spring中的一些概念

无语

Spring Framework

从哲学源头思考自动驾驶网络架构设计

华为云开发者社区

自动驾驶 架构

甲方日常 28

句子

工作 随笔杂谈 日常

Kubeless 如何基于 CPU 自动伸缩? | 玩转 Kubeless

donghui

Serverless kubeless

一个草根的日常杂碎(10月6日)

刘新吾

随笔杂谈 生活记录 社会百态

一个草根的日常杂碎(10月8日)

刘新吾

随笔杂谈 生活记录 社会百态

图解 K8S 源码 - Informer 篇

郭旭东

Kubernetes Kubernetes源码

苦难过后,终会团聚

hellocj

中国银行正式启动区块链产业金融服务项目 ​

CECBC区块链专委会

区块链 金融 金融服务

【第四周】系统架构

云龙

亚马逊Prime会员日火爆开启一站购全球逾3000万正品商品

爱极客侠

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

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