• 2024现代Android开发趋势


    2024现代Android开发趋势

    在当今的Android开发领域,我们看到了许多令人兴奋的技术和趋势,这些技术和趋势正在改变着应用程序的开发方式和用户体验。让我们一起深入探讨2024年现代Android开发的主要方向和关键技术。

    无处不在的Kotlin

    Kotlin已经成为Android开发的主流语言,并且在2024年,我们迎来了Kotlin 2.0版本。Kotlin的简洁性、表现力和与Java的互操作性使其成为开发者们的首选。此外,随着Jetpack Compose的推出,Kotlin将继续扮演着至关重要的角色。

    https://kotlinlang.org/docs/home.html

    K2编译器是Kotlin2.0的重要组成部分,K2的加持进一步增强了Kotlin的性能及Kotlin语言的快速推广。

    Jetpack Compose

    Jetpack Compose是一个现代化、声明式的UI工具包,它使开发者能够以更直观、更简单的方式构建用户界面。通过使用Compose,开发者可以快速构建交互式和可定制的UI组件,提升用户体验
    Jetpack Compose 是 Android Jetpack 库的一部分,利用 Kotlin 编程语言轻松创建原生用户界面,并与其他 Android Jetpack 库(如 LiveData 和 ViewModel)集成,使构建响应式和易于维护的 Android 应用程序变得更加简单。

    Jetpack Compose 的关键特性包括:

    • 使用声明式 UI 构建界面。
    • 提供可定制的小部件。
    • 轻松集成现有代码(包括旧视图系统)。
    • 实时预览功能。
    • 改进了性能表现。

    https://developer.android.com/jetpack/compose
    https://github.com/androidx/androidx/blob/androidx-main/compose/docs/compose-component-api-guidelines.md

    Android Jetpack

    Android Jetpack是一套库和工具集,旨在帮助开发者构建高质量、健壮的Android应用程序。Jetpack提供了各种组件,如ViewModel、LiveData、Room等,以支持现代化的应用程序架构和开发实践。
    常用的Jetpack工具包如下:

    • ViewModel
    • Room
    • DataStore
    • WorkManager
    • Navigation
    • CameraX
    • Compose
    • Media3
    • Glance

    需要进一步了解相关内容,请参考如下链接:

    https://developer.android.com/jetpack

    Material You / Material Design

    Material You是Google推出的一种个性化设计系统,允许用户根据自己的喜好调整应用程序的外观和感觉。与传统的Material Design相比,Material You更加注重用户体验和个性化。

    https://m3.material.io/
    https://developer.android.com/codelabs/jetpack-compose-theming#0

    Splash screens API

    Splash screens API是一个新的API,用于管理应用程序的启动画面。借助这个API,开发者可以更好地控制启动过程,提升应用程序的启动体验。

    https://developer.android.com/develop/ui/views/launch/splash-screen

    清洁架构(Clean Architecture)

    Clean Architecture是一种软件架构模式,旨在实现代码的可维护性、可测试性和可扩展性。通过将应用程序分解为清晰的层次,开发者可以更好地管理代码逻辑和业务规则。

    Clean Architecture 是由 Robert C. Martin 提出的概念,通过将软件划分为不同层次来实现责任的分离。其特点包括独立于框架、可测试、独立于用户界面、独立于数据库以及独立于任何外部机构。关键规则是依赖规则,要求源代码依赖只能指向内部,内部代码不应知晓外部内容。
    在 Android 中应用 Clean Architecture 分为三个层次:表现层(Presentation)、领域层(Domain)和数据层(Data)。表现层包括 Activities、Composables、Fragments、View Models 等;领域层包括 Use Cases、Entities、Repositories 等;数据层包括 Repository 实现、Mappers、DTO 等。

    https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

    分层架构模式(Architecture Patterns for Presentation Layer)

    在现代Android开发中,选择合适的架构模式对于构建可靠的应用程序至关重要。常见的架构模式包括MVP、MVVM、MVI等,开发者可以根据项目需求选择最适合的模式。
    架构模式是一种高层级策略,旨在帮助设计软件架构,具有在可重用框架内解决常见架构问题的特点。
    架构模式类似于设计模式,但规模更大,涉及更广泛的问题,如系统的整体结构、组件之间的关系以及数据管理方式。

    https://developer.android.com/topic/architecture

    依赖注入(Dependency Injection)

    依赖注入是一种重要的设计模式,可以提高代码的可测试性和可维护性。在2024年的Android开发中,像Hilt、Dagger、Koin等依赖注入框架将继续发挥重要作用。

    https://developer.android.com/training/dependency-injection/hilt-android
    https://insert-koin.io/
    https://dagger.dev/

    模块化(Modularization)

    模块化是一种将应用程序拆分为独立的模块或组件的方法,可以提高代码的重用性和可维护性。通过模块化设计,开发团队可以更好地协作,并实现更高效的开发流程。
    模块化的好处包括:

    • 可重用性:独立的模块可以在应用程序的不同部分甚至其他应用程序中重复使用。
    • 严格的可见性控制:模块使您能够轻松控制对代码库其他部分的暴露内容。
    • 可定制交付:Play Feature Delivery 利用应用程序包的高级功能,允许您有条件地或按需交付应用程序的某些功能。
    • 可扩展性:通过独立的模块,可以添加或删除功能而不影响应用程序的其他部分。
    • 易于维护:通过将应用程序划分为具有独立功能和责任的独立模块,更容易理解和维护代码。
    • 易于测试:通过独立的模块,可以单独测试它们,从而更容易检测和修复错误。
    • 架构改进:模块化有助于改进应用程序的架构,提高代码的组织和结构。
    • 提高协作:具有独立模块,开发人员可以同时在应用程序的不同部分工作,互不干扰。
    • 构建时间:一些 Gradle 功能,如增量构建、构建缓存或并行构建,可以利用模块化来提高构建性能。

    https://developer.android.com/topic/modularization

    网络Network

    在处理网络请求时,使用优秀的网络库是至关重要的。OkHttp、Retrofit和Ktor等网络库可以帮助开发者轻松处理网络通信,实现高效的数据交换。

    https://square.github.io/okhttp/
    https://square.github.io/retrofit/
    https://ktor.io/

    序列化Serialization

    数据序列化是将数据转换为特定格式以便在不同平台之间传输的过程。Moshi、Kotlin Serialization等序列化库可以帮助开发者轻松处理数据的序列化和反序列化。

    1. Moshi 和 Kotlin Serialization 是用于 Kotlin 和 Java 的两个序列化/反序列化库,允许您将对象转换为 JSON 或其他序列化格式,反之亦然。
    2. 两者均提供了针对在移动设备和桌面应用程序中使用而优化的用户友好接口。
    3. Moshi 主要专注于 JSON 序列化,而 Kotlin Serialization 支持多种序列化格式,包括 JSON。

    https://github.com/square/moshi
    https://github.com/Kotlin/kotlinx.serialization

    图片加载Image Loading

    在应用程序中加载和显示图片是常见的需求,而优秀的图片加载库可以提高应用程序的性能和用户体验。Coil、Glide等图片加载库可以帮助开发者实现快速、流畅的图片加载功能。
    图片加载库为您做了很多繁重的工作;它们处理缓存(这样您就不会多次下载图像)和网络逻辑,以下载图像并在屏幕上显示它。

    https://github.com/coil-kt/coil#jetpack-compose
    https://bumptech.github.io/glide/int/compose.html
    https://developer.android.com/jetpack/compose/graphics/images/loading

    响应式编程Reactivity / Thread Management

    在处理异步操作和多线程任务时,选择合适的响应式编程和线程管理工具至关重要。协程和RxJava等工具可以帮助开发者编写简洁、高效的异步代码。

    1. Kotlin 协程在响应式编程和异步处理方面表现出色,其悬挂函数和 Flow 机制具有独特优势。
    2. 然而,在 Android 应用程序开发中,承认 RxJava 的价值是至关重要的。
    3. 尽管协程和 Flow 的使用不断增加,但 RxJava 在多个项目中仍然是一个强大且受欢迎的选择。

    https://github.com/Kotlin/kotlinx.coroutines
    https://github.com/ReactiveX/RxJava

    本地存储Local Store

    在应用程序中存储本地数据是常见的需求,而使用合适的本地存储方案可以提高数据的安全性和可靠性。除了传统的SharedPreferences外,DataStore、EncryptedSharedPreferences等新型本地存储方式也备受开发者关注。下面是SharedPreferences、Preferences DataStore及Proto DataStore三种框架特征对比:

    https://developer.android.com/topic/libraries/architecture/datastore
    https://developer.android.com/reference/androidx/security/crypto/EncryptedSharedPreferences

    通过深入了解并灵活运用上述技术和趋势,我们可以更好地构建现代化、高效的Android应用程序,提升用户体验并满足不断变化的市场需求。愿我们在2024年的Android开发之路上取得更大的成功和突破!

    Testing 🕵🏼

    在软件开发中,测试是确保产品质量的重要环节。下面是一些常用的测试框架,请根据需要详细了解。

    • JUnit 5

    https://junit.org/junit5/

    • Mockk

    https://mockk.io/

    • Kotest
    • Kluent
    • Turbine
    • Espresso

    https://developer.android.com/training/testing/espresso

    • Robolectric
    • Maestro

    UI测试 📸

    Android中的截图测试涉及自动捕获应用程序中各种UI元素的屏幕截图,并将其与基准图像进行比较,以检测任何意外的视觉变化。这有助于确保应用程序在不同版本和配置下具有一致的UI外观,在开发过程的早期发现视觉回归问题。

    • Paparazzi

    https://github.com/cashapp/paparazzi

    • Roborazzi

    https://github.com/takahirom/roborazzi

    R8 优化

    R8是一种Java字节码优化器,用于优化应用程序的体积和性能。

    1. R8 是默认的编译器,将项目的 Java 字节码转换为在 Android 平台上运行的 DEX 格式。它是一个工具,帮助我们通过缩短类和属性名称、消除项目中未使用的代码和资源来混淆和减少应用程序的代码量。
    2. 可以通过查看 Android 文档了解有关收缩、混淆和优化应用程序的更多信息。此外,还可以通过 ProGuard 规则文件禁用特定任务或自定义 R8 的行为。
    3. 功能包括:代码收缩、资源收缩、混淆、优化。
    4. 第三方工具:DexGuard。

    https://developer.android.com/studio/build/shrink-code

    Play Feature Delivery

    Google Play的应用程序提供模型称为动态交付,使用Android应用程序捆绑包为每个用户的设备配置生成和提供优化的APK文件,因此用户只下载他们运行应用程序所需的代码和资源。

    Adaptive layouts自适应布局

    随着不同形态的移动设备的使用增长,我们需要工具来适应不同类型屏幕的Android应用程序。因此,Android为我们提供了窗口大小类,以便以简单的方式将屏幕格式分为三大组:兼容、中等和扩展。通过这种方式,我们避免了考虑太多屏幕设计而将可能性减少到了3个组之内。
    Windows Size Classes

    另一个重要资源是规范布局(Canonical Layouts),这些是预定义的屏幕设计,可用于 Android 应用程序中的大多数场景,并指导我们如何将它们调整适配到大屏幕上。

    https://developer.android.com/guide/topics/large-screens/support-different-screen-sizes
    https://developer.android.com/courses/pathways/jetpack-compose-for-android-developers-5

    本地化 🌎

    本地化涉及将产品调整到满足不同地区多样化受众的需求。这包括翻译文本、调整格式和考虑文化方面。其优势包括进入全球市场、增强用户体验、提高客户满意度、在全球市场上保持竞争力以及遵守当地法规。

    https://developer.android.com/training/basics/supporting-devices/languages
    https://developer.android.com/guide/topics/resources/localization
    https://developer.android.com/guide/topics/resources/app-languages

    性能 🔋⚙️

    在我们为Android开发应用程序时,我们必须确保用户体验不仅在应用程序开始时更好,而且在整个执行过程中也更好。因此,有一些工具可以帮助我们进行预防性分析和对可能影响应用程序性能的案例进行持续监控。
    官方性能优化包含以下主题:

    • Benchmark
    • Baseline Profiles
    • App Startup
    • Firebase Performance Monitoring
    • JankStats库

    https://developer.android.com/topic/performance

    应用内更新


    当用户在其设备上保持应用程序更新时,他们可以尝试新功能,并受益于性能改进和错误修复。虽然一些用户在其设备连接到非计量网络时启用后台更新,但其他用户可能需要提醒他们安装更新。应用内更新是Google Play核心库的一项功能,它提示活跃用户更新您的应用程序。

    https://developer.android.com/guide/playcore/in-app-updates

    应用内评论

    Google Play应用内评论API允许您提示用户提交Play商店评分和评论,而无需离开您的应用程序或游戏。通常情况下,可以在用户应用程序的整个使用过程中随时触发应用内评论流程。在流程中,用户可以使用1至5星评级系统对您的应用程序进行评分,并添加可选评论。提交后,评论将发送到Play商店并最终显示。

    https://developer.android.com/guide/playcore/in-app-review

    确保应用程序的质量和安全性对于开发人员来说至关重要。以下是一些关键提示,可帮助您提高应用程序的用户体验和保护用户数据的安全性。

    性能监测 👀

    在竞争激烈的应用生态系统中,及时检测和解决问题是确保应用程序稳定性的关键。以下工具和方法可帮助您实现这一目标:

    • 利用 Google Analytics 和 Android Vitals 来识别应用程序中的问题区域。
    • 使用 Firebase Crashlytics 提供的自定义崩溃报告,深入了解问题根本原因。
    • 使用 Firebase Performance Monitoring 监控应用程序性能,及时发现并解决性能问题。

    https://developer.android.com/topic/performance/vitals
    https://firebase.google.com/docs/crashlytics

    辅助功能


    辅助功能是确保所有用户都能方便地访问和使用应用程序的重要特性。以下是一些建议,可帮助您改善应用程序的辅助功能:

    • 确保文本具有足够的对比度,并提供可调整大小的文本选项。
    • 使用大型简单的控件,并为每个 UI 元素提供描述。
    • 查看 Android 文档以获取更多关于辅助功能的指南和最佳实践。

    https://developer.android.com/guide/topics/ui/accessibility

    安全性 🔐

    保护用户数据和应用程序安全对于建立用户信任至关重要。以下是一些安全性建议,可帮助您提高应用程序的安全性:

    • 使用凭据管理器安全地管理用户签入信息。
    • 加密敏感数据和文件,例如使用 EncryptedSharedPreferences 和 EncryptedFile。
    • 实施基于签名的权限控制,确保应用之间的安全数据共享。
    • 避免将敏感信息硬编码在应用程序中,而是将其存储在安全的位置,如 local.properties 文件中。
    • 强烈建议实施 SSL Pinning 来加强应用程序与远程服务器之间的通信安全性。
    • 考虑实施 Runtime Application Self Protection (RASP) 技术,以在运行时保护应用程序免受攻击和漏洞。

    通过遵循这些建议并使用相应的工具和技术,您可以提高应用程序的质量、用户体验和安全性。

    https://developer.android.com/privacy-and-security/security-tips

    版本目录(Version Catalogs)


    Gradle提供了一种集中管理项目依赖项的标准方法,称为版本目录;它在7.0版本中试验性地引入,并在7.4版本中正式发布。
    优势:

    • 每个目录都会生成类型安全的访问器,这样您可以在 IDE 中轻松地使用自动完成来添加依赖项。
    • 所有项目都可以看到每个目录。这是一个中心位置,用于声明依赖项的版本,并确保对该版本的更改适用于每个子项目。
    • 目录可以声明依赖项捆绑包,其中包含常常一起使用的“依赖项组”。
    • 目录可以将依赖项的组和名称与其实际版本分开,并使用版本引用,从而可以在多个依赖项之间共享版本声明。

    https://docs.gradle.org/current/userguide/platforms.html

    日志记录器(Logger)


    日志记录器是一种软件工具,用于记录程序执行的信息;重要事件、错误调试消息和其他可能对诊断问题或理解程序运行方式有用的信息。日志记录器可以配置为将消息写入不同的位置,如日志文件、控制台、数据库,或通过将消息发送到日志服务器来实现。

    • Klogging

    https://klogging.io/

    • Timber

    https://github.com/JakeWharton/timber

    代码检查器 / 静态代码分析器(Linter / Static Code Analyzer)


    代码检查器是一种用于分析程序源代码以查找代码中潜在问题或错误的编程工具。这些问题可以是语法问题、不当的代码风格、缺乏文档、安全问题等,它们可能会影响代码的质量和可维护性。

    • Android Lint

    https://medium.com/swlh/what-is-android-lint-17fa0d87abb2

    • Detekt ⏫

    https://detekt.dev/

    • Ktlint ⏫

    https://pinterest.github.io/ktlint/

    • Konsist

    https://github.com/LemonAppDev/konsist

    Google Play Instant


    Google Play Instant 可让原生应用和游戏在运行 Android 5.0(API 级别 21)或更高版本的设备上启动,而无需安装。您可以使用 Android Studio 构建这些类型的体验,称为即时应用和即时游戏。通过允许用户运行即时应用或即时游戏,即提供即时体验,可以提高您的应用或游戏的发现度,帮助吸引更多活跃用户或安装量。

    https://developer.android.com/topic/google-play-instant/overview

    新设计中心(New Design Hub)


    Android 团队提供了一个新的设计中心,帮助创建美观、现代的 Android 应用程序,这是一个集中了解多种形态设计的地方。

    http://d.android.com/design/ui

    人工智能(AI)


    由谷歌开发的两款最先进的人工智能(AI)模型Gemini和PalM 2,正准备改变 Android 应用程序开发的格局。这些模型提供了一系列优势,将推动应用程序的效率、用户体验和创新。

    • Gemini
    • PalM 2

    https://ai.google.dev/
    https://ai.google/discover/palm2/

    AI 编码助手工具

    Studio Bot

    Studio Bot 是您在 Android 开发中的编码伴侣。它是在 Android Studio 中进行对话式体验,通过回答 Android 开发问题帮助您提高生产力。它由人工智能驱动,可以理解自然语言,因此您可以用简单的英语提出开发问题。Studio Bot 可以帮助 Android 开发人员生成代码,找到相关资源,学习最佳实践,并节省时间。

    https://developer.android.com/studio/preview/studio-bot

    GitHub Copilot

    GitHub Copilot 是一款 AI 对编程助手。您可以使用 GitHub Copilot 在编辑器内获取整行或整个函数的建议。

    https://github.com/features/copilot

    Amazon CodeWhisperer

    这是亚马逊提供的一项服务,根据您当前代码的上下文生成代码建议。它可以帮助您编写更高效和安全的代码,发现新的 API 和工具。

    https://aws.amazon.com/codewhisperer/

    Kotlin 跨平台 🖥 📱⌚️ 🚀

    最后,同样重要的是,今年的重要发现是 Kotlin 跨平台 🎉。它成为跨平台应用程序开发领域的一个强大竞争者。虽然我们的主要关注点可能在于 Android 应用程序开发,但 Kotlin 跨平台为我们提供了灵活性,使我们能够利用 KMP 框架打造完全原生的 Android 应用程序。这一战略举措不仅为我们的项目未来保驾护航,还为我们提供了顺利过渡到多平台环境所需的基础设施,如果我们选择追求的话。🚀

    (Kotlin Multiplatform) https://www.jetbrains.com/kotlin-multiplatform/

  • 相关阅读:
    CPU眼里的C/C++: 1.3 汇编级单步调试函数执行过程
    用WebGPU实现基于物理的渲染
    猿创征文|HCIE-Security Day55:反病毒技术
    关于调参技巧的问题
    红帽认证 | RHCE考试包括哪些内容?
    构造平衡二叉树
    WZOI-348机动车违章识别系统
    DeepStream--测试TrafficCamNet检测模型
    【腾讯云原生降本增效大讲堂】京东云原生大规模实践之路
    ESP32C3 LuatOS RC522②写入字符串
  • 原文地址:https://blog.csdn.net/u011897062/article/details/136391832