欢迎关注「Android茶话会」
- 回 「学习之路」 取Android技能道路经典电子书
- 回「pdf」取阿里&字节经典面试题、Android、算法、Java等系列武功秘籍。
- 回 「天涯」 取天涯论坛200+精彩博文
本期只需介绍一下2023年开发Android运用的一些流行实践
防杠声明
这是一篇依据我个人观点和经历的文章,考虑到Android开发者社区的不同意见,我或许没有说到一些十分风趣的东西、方式和架构,但这并不意味着它们不能成为开发Android运用程序的其他风趣挑选。 接下来,我将说到我认为在Android上构建现代运用程序很重要的东西、库、架构、指南和其他实用程序的列表。
Kotlin ❤️
Kotlin是由JetBrains开发的编程言语。谷歌引荐,并于2017年5月正式宣告(见此处发布)。它是一种与Java兼容的现代编程言语,能够在JVM上运行,这使得它在Android运用程序开发中的选用十分快。 不论你是不是Android新手,你都应该把Kotlin作为你的榜首挑选,不要逆流而上,谷歌在Google I/O 2019上宣告了这一做法。运用Kotlin,您将能够运用现代言语的一切功用,包含协程的强壮功用和为Android生态系统开发的现代库的运用。 官方kotlin文档在这里kotlinlang.org/docs/home.h…
Jetpack Compose
image.png
❝
Jetpack Compose is Android’s recommended modern toolkit for building native UI. It simplifies and accelerates UI development on Android. __ _Jetpack Compose documentation
❞
Jetpack Compose是Android Jetpack库的一部分,运用Kotlin编程言语轻松创立本地用户界面。此外,它还集成了其他Android Jetpack库,如LiveData和ViewModel,然后更简单构建呼应式和可维护的Android运用程序
Jetpack Compose的一些要害功用包含:
- 声明式的用户界面。
- 可定制的小部件。
- 易于与现有代码集成。
- 活的预览。
- 提升的性能
「相关资源:」
- Official documentation.
- Compose to Kotlin Compatibility Map
- Jetpack Compose Roadmap
- Course.
Jetpack Compose documentation
Android Jetpack
image.png
❝❞
Jetpack is a suite of libraries to help developers follow best practices, reduce boilerplate code, and write code that works consistently across Android versions and devices so that developers can focus on the code they care about.
❝
_ Android Jetpack documentation developer.android.com/jetpack
❞
以下是Jetpack最常用的一些组件
- ViewModel
- Room
- DataStore
- WorkManager
- Navigation
- CameraX
- Compose
Clean Architecture
image.png
“Clean Architecture”的概念是由Robert C. Martin提出的。它的根底是经过将软件划分为层来完成责任的分离,具有以下特点
- 独立于框架。
- 可测验的。
- 独立于UI。
- 独立于数据库。
- 独立于任何外部署理。
依靠的规矩
The dependency rule is described very well by the author in his piece, The Clean Code Blog(blog.cleancoder.com/uncle-bob/2…)
❝
The overriding rule that makes this architecture work is The Dependency Rule. This rule says that source code dependencies can only point inwards. Nothing in an inner circle can know anything at all about something in an outer circle. In particular, the name of something declared in an outer circle must not be mentioned by the code in the an inner circle. That includes, functions, classes. variables, or any other named software entity. 使这个体系结构工作的最重要的规矩是依靠规矩。该规矩表示源代码依靠项只能指向内部。内部圈子里不或许知道外部圈子里的事。特别是,在外部圆圈中声明的东西的称号不能被内部圆圈中的代码提及。这包含,函数,类。变量,或任何其他命名的软件实体。
❞
具体可见 The Clean Code Blog(blog.cleancoder.com/uncle-bob/2…)
Clean架构在Android中的表现
Clean Architecture in Android
- Presentation(展现层): Activities, Fragments, View Models, others view components.
- Domain(范畴层): Use Cases, Entities, Repositories, others domain components.
- Data(数据层): Repository implementations, Mappers, DTO’s, etc.
展现层的架构方式
架构方式是一种高级战略,旨在协助规划软件体系结构,其特点是在可重用框架内为常见的架构问题供给解决方案。架构方式相似于规划方式,可是它们的规模更大,而且处理更多的全局问题,例如系统的总体结构、组件之间的联系以及管理数据的方式。
在展现层中,咱们有一些架构方式,我想着重以下几点:
- MVVM
- MVI
在这里呢 我不想解说每一个,由于在网上你能够找到太多关于这方面的信息。,此外你也能够翻阅 官方的架构指南(developer.android.com/topic/archi…)
依靠注入
依靠注入是一种软件规划方式,它答应客户端从外部源获取依靠项,而不是自己创立依靠项。它是一种在目标及其依靠项之间完成操控反转(IoC)的技能。有以下比较好用的框架能够学习研讨下
- Hilt ❤️
- Dagger
- Koin
模块化
模块化是一种软件规划技能,它答应您将运用程序划分为独立的模块,每个模块都有自己的功用和责任。
模块化的益处
- 「可重用性」: 经过具有独立的模块,它们能够在运用程序的不同部分甚至其他运用程序中被重用。
- 「严厉的可见性操控」: 模块使您能够轻松地操控向代码库的其他部分公开的内容。
- 「可定制交给」: 答应你有条件地或按需交给运用的某些功用。
- 「可伸缩性」: 经过独立的模块,能够添加或删去功用,而不会影呼运用程序的其他部分。
- 「易于维护」: 经过将运用程序划分为独立的模块,每个模块都有自己的功用和责任,能够更简单地了解和维护代码。
- 「易于测验」: 经过具有独立的模块,能够对它们进行阻隔测验,这使得检测和修复过错变得简单。
- 「体系结构改善」: 模块化有助于改善运用程序的体系结构,答应更好的代码组织和结构。
- 「改善协作」: 经过具有独立的模块,开发人员能够一起在运用程序的不同部分上工作,而不会受到干扰。
- 「构建时刻优化」: Gradle的一些功用,如增量构建、构建缓存或并行构建,能够利用模块化来进步构建性能。
更多拜见官方文档(developer.android.com/topic/modul…)
网络
- OkHttp
- Retrofit
强到没得说,也有一些依据此的业务封装框架
图片加载
- Coil
- Glide
Coil是kotlin友好的图片库
呼应式和线程管理
image.png
当咱们议论呼应式编程
和异步进程
时,咱们的榜首个挑选是Kotlin协程;得益于Suspension Functions和Flow,咱们能够满意一切这些需求。然而,关于咱们这些用Android工作了几年的人来说,咱们知道RxJava是一个十分强壮的东西,它有许多处理数据流的函数集。不过rx兼容进kotlin这套全家桶是不友好的,仍是引荐kotlin这一套东西
- Kotlin Coroutines: [suspend functions / Flow Api ]
- RxJava
本地存储
在构建移动运用程序时,重要的一点是能够在本地持久化数据,例如一些会话数据或缓存数据等。依据运用程序的需求挑选正确的存储选项十分重要。咱们能够存储相似key-value这样的非结构化数据,或者像数据库这样的结构化数据。请记住,这一点并没有说到咱们可用的一切类型的本地存储(例如文件存储),只说到答应咱们保存数据的东西。 主张
- SharedPreferences
- DataStore
- EncryptedSharedPreferences
测验
- JUnit 5
- Mockk
- Espresso
- Robolectric
R8优化
R8是将项目的Java字节码转换为Android平台上运行的DEX格式的默认编译器。它是一种东西,经过缩短类及其属性的称号,消除项目中未运用的代码和资源,协助咱们混杂和减少运用程序的代码。要了解更多信息,请查看Android文档 Shrink, obfuscate, and optimize your app.
自习惯布局
image.png
随着不同方式的移动设备增长,咱们需求一些东西来让咱们的Android运用习惯不同类型的屏幕。这便是为什么Android为咱们供给了Window Size Classes,咱们能够避免考虑多种屏幕规划的复杂性,将或许性减少到3种类型,即:兼容型、中等型和扩展型。
Support different screen sizes
咱们具有的另一个重要资源是标准布局( Canonical Layoutsm3.material.io/foundations…),这是预定义的屏幕规划,能够在咱们的Android运用程序中的大多数场景中运用,而且还向咱们展现了怎么使它们习惯大屏幕的指南。
其他相关资源:
- 3 things to know about Form Factors at Google I/O 2022
- Playlist: Form Factors at Google I/O
- Form-Factor Training
- Form Factors at Google I/O 2022 (2)
Linter
Linter是一种编程东西,用于分析程序源代码以发现代码中的潜在问题或过错。这些问题或许是语法、不适当的代码风格、缺乏文档、安全问题等等,它们会对代码的质量和可维护性产生影响。
- Android Lint
- Detekt
- Ktlint
- 回 「学习之路」 取Android技能道路经典电子书
- 回「pdf」取阿里&字节经典面试题、Android、算法、Java等系列武功秘籍。
- 回 「天涯」 取天涯论坛200+精彩博文,包含小说、形而上学等
您的 点赞、谈论,是对我的巨大鼓舞!