写点什么

谷歌发布安卓应用模块化指南,重点关注代码库增长出现的问题

作者:Diogo Carleto

  • 2022-12-14
    北京
  • 本文字数:1009 字

    阅读完需:约 3 分钟

谷歌发布安卓应用模块化指南,重点关注代码库增长出现的问题

最近,谷歌发布了一份关于安卓应用模块化的指南。该指南旨在为开发人员提供构建多模块安卓应用的最佳实践和模式,重点关注在代码库增长时出现的问题,如可伸缩性、可读性、稳定性和可测试性。

 

在一项关于开发者模块化经验的调查中,54%的参与者表示很难找到关于模块化的学习资料,95%的人表示 developer.android.com 网站上的资料不足够,于是谷歌决定发布一份安卓应用模块化指南。需要注意的是,该指南针对的是中级和高级开发人员,他们通常对推荐的应用架构更为熟悉。

 

据谷歌称,他们的一些应用已经在使用模块化,如 Play Store、Google News 和 YouTube。

 

模块化就是将代码库组织成松散耦合的多个部分,这些部分通常叫作模块。每个模块必须是独立的,且有明确的职责。

 


(图片来自https://developer.android.com/topic/modularization

 

模块化带来了许多好处,降低了设计复杂性,让大型系统的维护和演化变得更容易。让我们来看看这些好处:

 

  • 可重用性——提供了共享代码和使用相同模块构建多个应用的可能性。一个应用由许多模块组成,其中每个模块负责特定的功能。

  • 严格的可见性控制——开发人员可以很容易控制应该向代码库和模块的其他部分公开哪些东西。

  • 自定义交付——Play Feature Delivery允许开发者有条件地或按需交付应用的特定功能。

 

模块化还有其他好处,例如:

 

  • 可伸缩性——如果项目进行了适当的模块化,通常会有关注点分离和松散耦合的代码库,从而更容易维护和演变。

  • 所有权——模块可用于加强问责,有专门的所有者负责维护代码、修复 bug、添加测试和评审变更。

  • 封装性——一个模块对其他部分的了解应该尽可能少。独立的代码更容易阅读、理解和演化。

  • 可测试性——测试代码的能力,测试模块比测试大型紧密耦合的系统更容易、更快。

  • 构建时间——与增量构建、构建缓存或并行构建相关,Gradle的一些功能可以利用模块化来提高构建性能。

 

谷歌在GitHub代码库中提供了多模块应用 Now in Android 的代码,还提供了一个模块化之旅指南,介绍了模块的功能以及它们之间的交互方式。

 

该指南还有一部分是关于常见模块化模式的,你可以在这部分看到低耦合高内聚、数据模块特性模块应用模块公共模块等等。

 

原文链接

https://www.infoq.com/news/2022/11/android-modularization-guide/


相关链接:

你的 Flutter 应用该考虑迁移代码了:Dart 3 将在 2023 年成为 100% 健全的空安全语言

Vue 3 不是最佳选择? 耗时两周从 Vue 2 迁移到 Svelte 后:代码执行更快、体验更佳

2022-12-14 10:312313

评论

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

一文带你学会 Blob(含 7 个使用场景)

pingan8787

Java 大前端 Web Blob

《架构师训练营》第四周总结

消息队列(三)如何保证消息不被重复消费?

奈何花开

Java MQ 消息队列

CECBC带你一图看懂区块链

CECBC

CECBC 区块链技术 去中心化

ARTS-WEEK5

一周思进

ARTS 打卡计划

央行数字货币:第三方支付产业新变量

CECBC

数字货币 DCEP 区块链技术

架构师训练营第四周学习总结

CATTY

架构师训练营 - 学习笔记 - 第四周

心在飞

极客大学架构师训练营

万字长文,让 Java 程序员入门小众语言 Ruby

Phoenix

Java ruby 个人成长 编程语言

原来使用Postman如此简单,API测试之Postman使用全指南

软测小生

接口 Postman 接口测试 API API测试

Linux系统查询端口命令

打鱼小王子

安畅迁移平台的云原生之路

雪雷

Kubernetes DevOps 云原生 CI/CD 迁移

系统架构感想

朱月俊

MyBatis标签trim,你不会以为我是去空格的吧?

Java小咖秀

Java 面试 mybatis

python中对字典与列表组合进行排序

开心太平洋

Python List 排序

GO语言泛型编程实践

老胡爱分享

泛型 Go 语言

自由职业的前半年,我是如何度过的?

王磊

Java 程序员

架构师训练营 - 第四周命题作业

牛牛

极客大学架构师训练营 作业

围绕 Office 365 的那些 CLI

手艺人杨柳

Office 365

架构师训练营作业 -Week4

wyzwlj

极客大学架构师训练营

Prometheus 存储层的演进

伴鱼技术团队

性能优化 系统架构 Prometheus 存储 时序数据库

《架构师训练营》第四周命题作业

互联网系统常见问题以及解决方案

而立

极客大学架构师训练营

计算机操作系统基础(六)---作业管理之进程调度

书旅

Java php 多线程 操作系统 进程

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

朱月俊

小师妹学JVM之:JIT中的PrintAssembly

程序那些事

JVM 小师妹 性能调优 JIT 签约计划第二季

谈反应式编程在服务端中的应用,数据库操作优化,提速 Upsert

newbe36524

C# MySQL 数据库 mongodb Reactive

第四周作业

技术小生

极客大学架构师训练营

学习总结 - 第 4 周

饶军

重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」

小傅哥

Java 设计模式 小傅哥 重构 备忘录模式

快来解锁Pepper机器人新技能,够酷Pepper就跟你回家!

阿甜

编程 开发者 App 开发 机器人

谷歌发布安卓应用模块化指南,重点关注代码库增长出现的问题_语言 & 开发_InfoQ精选文章