现代 Android 开发需要掌握哪些技能

语言基础

优先使用 Kotlin 语言,掌握其核心特性,如扩展函数、Lambda 表达式、数据类、协程等。Kotlin 是 Android 官方推荐的语言,具有更简洁的语法和更强大的功能。

Java 仍然是 Android 开发的基础语言,了解 Java 的面向对象编程(OOP)思想、集合框架、异常处理等。Android 的许多底层 API 仍然是用 Java 编写的,因此了解 Java 对于理解 Android 系统架构非常重要。

C++ 语言在 Android 开发中主要用于编写跨平台库或者性能敏感的部分,如游戏开发或需要与底层系统交互的场景。掌握 JNI(Java Native Interface)以便在 Kotlin/Java 中调用 C++ 代码。同时 C++ 库的反编译难度较大,可以加固 APK 防止逆向工程。

UI 开发

使用现代 UI 框架 Jetpack Compose,熟练掌握Composable 函数、状态管理、SideEffect APIs、动画、主题、自定义组件、Navigation-Compose 路由导航。

对于传统 UI 开发,熟悉 View System,包括 ConstraintLayout、RecyclerView、ViewPager2、自定义 View、动画系统,XML 布局与 DataBinding/ViewBinding。

架构模式

MVVM(Model-View-ViewModel)是现代 Android 开发的主流架构,强调视图与业务逻辑的分离。通常结合使用 ViewModel、LiveData 或 StateFlow 来管理 UI 状态和生命周期。

MVI(Model-View-Intent)在 Jetpack Compose 中也越来越流行,适用于响应式编程和单向数据流。

数据管理通常使用 Repository 模式,结合单一数据源(Single source of truth)来管理数据状态。数据源可以是网络、数据库或本地缓存。

组件之间的依赖管理通常使用依赖注入框架,如 Hilt 或 Dagger,来管理组件之间的依赖关系,简化代码结构。

异步编程

使用 Kotlin 协程和 Flow 进行异步编程,掌握协程的启动、取消、异常处理、调度器(Dispatchers)以及 Flow 的冷流、热流、转换操作符(如 map、filter、collect)。

传统的 RxJava 仍然在一些项目中使用,了解 RxJava 的 Observable、Schedulers、Operators 等概念。

Jetpack 组件生态

数据库操作使用 Room,掌握实体类、DAO、数据库迁移、LiveData/Flow 支持。

数据存储使用 DataStore(替代 SharedPreferences),支持 Proto 数据存储和 Key-Value 存储。其相较于 SharedPreferences 更加安全和高效。

后台任务调度使用 WorkManager,支持定时任务、链式任务等。其优势在于能够处理设备重启、网络变化等场景。

大数据分页加载使用 Paging 3,支持从网络或数据库中高效加载大数据集,提供流式数据加载和自动分页。

路由管理使用 Navigation 组件,支持 Fragment、Compose 的路由导航,掌握 NavController、NavGraph、DeepLink 等概念。

网络和数据

网络请求仍然是经典的 Retrofit + OkHttp 组合,掌握 Retrofit 的接口定义、请求参数、响应解析、错误处理等。使用 OkHttp 进行底层网络请求,支持拦截器、缓存、SSL/TLS 配置等。

Json 解析使用 Gson 或 Moshi,Moshi 在 Kotlin 中更为友好,支持 Kotlin 特性如数据类和 null 安全。

Ktor Client 是一个现代的异步 HTTP 客户端,适用于需要协程支持的网络请求场景, 在 Kotlin Multiplatform 项目中常用。

依赖注入(DI)

使用依赖注入框架来管理组件之间的依赖关系,简化代码结构。常用的依赖注入框架包括 Hilt(Google 官方推荐)、Dagger 2、Koin 等。

Hilt 是基于 Dagger 的简化版本,提供了更简单的注解和集成方式,适合大多数 Android 项目。

Dagger 2 是一个功能强大的依赖注入框架,适用于需要高度定制化的项目。

Koin 是一个轻量级的依赖注入框架,使用 Kotlin DSL 语法,适合小型项目或快速原型开发。它是 Kotlin 生态系统中的一个流行选择,在 Compose 项目中也有很好的支持。

测试能力

单元测试使用 JUnit 5 或 JUnit 4 进行单元测试,掌握 Mockito、MockK 等 Mock 框架的使用。

UI 测试使用 Espresso 或 Jetpack Compose Testing Library 进行 UI 测试,支持编写可重复的 UI 测试用例。

Compose UI 测试使用 Compose Testing Library,支持编写可重复的 UI 测试用例,能够模拟用户交互和验证 UI 状态。

Instrumentation 测试使用 AndroidX Test 框架,支持在真实设备或模拟器上运行测试。

性能优化

性能优化是现代 Android 开发的重要环节, 包括启动速度优化、内存管理、网络性能优化、帧率卡顿治理、ANR(Application Not Responding)问题排查、多线程优化。

启动速度优化:使用 Android Profiler 分析应用启动时间,减少冷启动时间,优化热启动。

内存管理:使用 LeakCanary 检测内存泄漏,优化内存使用,避免内存泄漏和过度分配。

网络性能优化:使用 OkHttp 的缓存机制,减少网络请求次数,优化数据加载速度。

帧率卡顿治理:使用 Systrace、Traceview 等工具分析帧率卡顿问题,优化 UI 渲染性能。

ANR 问题排查:使用 StrictMode、ANR WatchDog 等工具检测 ANR 问题,优化主线程操作,避免长时间阻塞。

多线程优化:使用协程的 Dispatchers 优化多线程操作,避免线程切换开销。

内存泄漏检测:使用 LeakCanary 等工具检测内存泄漏,及时修复内存泄漏问题。

项目构建与管理

熟练掌握 Gradle 脚本(Groovy / Kotlin DSL),包括构建配置、依赖管理、任务定义等。Gradle 是 Android 官方推荐的构建工具,支持灵活的构建配置和插件扩展。

多模块化项目管理,使用 Gradle 的多模块特性来组织大型项目,支持模块间依赖和共享代码。构建速度优化,使用 Gradle 的缓存机制、增量编译、配置缓存等特性来优化构建速度。

使用 Version Catalogs 来集中管理依赖版本,避免版本冲突和重复定义。

CI/CD 管道使用 GitHub Actions、GitLab CI、Bitrise、Firebase App Distribution 等工具进行持续集成和持续交付。掌握 YAML 配置文件的编写和 CI/CD 流水线的设计。

平台能力

掌握动态权限申请,了解 Android 6.0 及以上版本的权限模型,支持运行时权限请求和权限回调处理。

掌握相机、定位、蓝牙等硬件功能的使用,了解相关权限和 API 的使用方法。

掌握音视频处理,使用 Media3、ExoPlayer 等库进行音视频播放和处理,支持流媒体播放、缓存等功能。

掌握电池优化、前后台切换、通知等系统级功能的使用,了解相关 API 的使用方法。

掌握兼容性适配,了解折叠屏、多窗口、大屏幕等不同设备的适配方案。

跨平台与拓展方向

Kotlin Multiplatform 是一种新兴的跨平台开发技术,支持在多个平台(如 Android、iOS、Web、桌面)上共享代码。目前在移动端主要用于 Android 和 iOS 的跨平台开发。相较于其他跨平台框架,Kotlin Multiplatform 允许开发者使用原生 UI 框架(如 Jetpack Compose 和 SwiftUI),从而提供更好的用户体验和性能。

Flutter 和 React Native 是两种流行的跨平台移动开发框架,适用于需要快速开发和部署的项目。Flutter 使用 Dart 语言,提供丰富的 UI 组件和高性能渲染引擎;React Native 使用 JavaScript 和 React 框架,支持热更新和丰富的生态系统。

Compose Multiplatform 是 JetBrains 推出的跨平台 UI 框架,支持在桌面(Windows、macOS、Linux)和 Web 上使用 Jetpack Compose 进行 UI 开发。目前在国内并非主流,但随着 JetBrains 的推动,未来有望获得更多关注。

发布与应用管理

掌握应用发布流程,包括应用签名、Bundle(AAB)打包、版本管理、构建变体(Build Variants)等。

了解 Google Play Console 的使用,掌握应用上架、更新、用户反馈管理等功能。

使用 ProGuard 或 R8 进行代码混淆和优化,保护应用代码安全。

使用 Firebase Crashlytics、Bugsnag 等工具进行崩溃分析和日志管理,及时发现和修复应用问题。

开发工具

Android Studio: 官方推荐的 IDE,基于 IntelliJ IDEA,提供强大的代码编辑、调试、性能分析等功能。熟练使用其各种工具和插件,提高开发效率。

ADB (Android Debug Bridge): 用于与 Android 设备进行通信的命令行工具,支持安装应用、调试、日志查看等功能。

Profiler: 用于性能分析的工具,支持 CPU、内存、网络等多方面的性能监控和分析。

Layout Inspector: 用于查看和调试应用布局的工具,支持实时查看视图层次结构和属性。

Network Inspector: 用于监控和分析应用网络请求的工具,支持查看请求详情、响应时间等信息。

Lint: 用于代码质量检查的工具,支持检测潜在的错误、性能问题和不符合最佳实践的代码。

LeakCanary: 用于检测内存泄漏的工具,支持自动检测和报告内存泄漏问题。

StrictMode: 用于检测主线程阻塞和其他潜在问题的工具,支持配置不同的检测策略。

Gradle CLI: 用于命令行构建和管理项目的工具,支持执行各种 Gradle 任务和命令。