杰瑞科技汇

新版android开发教程笔记

这份笔记基于 Google 推荐的现代 Android 开发实践,使用 Kotlin 作为主要语言,并整合了最新的 Jetpack 组件和架构指南,它适合有一定编程基础,希望快速上手或系统学习新版 Android 开发的开发者。

新版android开发教程笔记-图1
(图片来源网络,侵删)

新版 Android 开发核心笔记

开发环境与工具

  1. Android Studio

    • 官方 IDE,集成了所有必要的开发、调试、性能分析工具。
    • 版本要求:建议使用最新稳定版(如 Hedgehog | 2025.1.1 及以上)。
    • 核心功能
      • Layout Editor: 可视化布局编辑器,支持 ConstraintLayout 和 Compose。
      • Emulator: 功能强大的安卓模拟器。
      • APK Analyzer: 分析 APK 包大小和内容。
      • Profilers: CPU、内存、网络、能耗性能分析器。
      • Version Control: 内置 Git 支持。
  2. SDK (Software Development Kit)

    • Android SDK Platform: 特定 Android 版本的 API 级别和系统镜像。
    • Build Tools: 编译、打包 APK 所需的工具(如 aapt, dx/d8)。
    • SDK Tools: 开发和管理工具(如 adb, emulator)。
    • 最佳实践:在 build.gradle 文件中指定 compileSdktargetSdk,这决定了你的应用可以使用的最新 API 和需要测试的最终目标版本。
  3. Kotlin

    • 官方首选语言,完全兼容 Java,语法更简洁、安全、富有表现力。
    • 核心优势
      • 空安全:从编译层面杜绝 NullPointerException
      • 协程:简化异步编程,避免回调地狱。
      • 扩展函数:为现有类添加新功能,无需继承。
      • 数据类:一键生成 equals(), hashCode(), toString() 等方法。

核心概念与架构

  1. 四大组件

    新版android开发教程笔记-图2
    (图片来源网络,侵删)
    • Activity: 应用的可视化界面,一个窗口。
    • Service: 在后台长时间运行的无界面组件。
    • Broadcast Receiver: 接收系统或应用广播的组件。
    • Content Provider: 管理应用数据,并允许其他应用访问。
  2. AndroidManifest.xml

    • 应用的“身份证”和“配置文件”。
    • 声明四大组件、权限、硬件需求、库依赖等。
  3. 应用架构

    • 核心目标:关注点分离、可测试性、可维护性。
    • 官方推荐架构MVVM (Model-View-ViewModel)
      • Model: 数据层,负责数据来源(网络、数据库、本地文件)和业务逻辑。
      • View: UI 层,负责展示数据和用户交互(Activity/Fragment/Compose UI)。
      • ViewModel: 连接 Model 和 View 的桥梁,持有并暴露 UI 所需的数据,监听 Model 的变化并通知 UI 更新,它不持有 View 的引用,因此配置更改(如屏幕旋转)时不会丢失数据。

现代 UI 开发 (Jetpack Compose)

Jetpack Compose 是 Google 推荐的用于构建原生 Android UI 的现代工具包,它使用更少的代码、强大的工具和直观的 Kotlin API,让你能快速打造精彩应用。

  1. 核心思想

    新版android开发教程笔记-图3
    (图片来源网络,侵删)
    • 声明式 UI: 你只需描述 UI 在不同状态下应该“是什么样子”,而不是“如何构建”它。
    • 函数式: UI 由一个或多个可组合函数 构建。
    • 单向数据流: 数据从上层(如 ViewModel)流向 UI 组件,用户操作通过事件回调(如 onClick)反向传递给上层。
  2. 基础概念

    • @Composable 注解: 标记一个函数为可组合函数,用于构建 UI。
    • @Preview 注解: 在不运行 App 的情况下,在 IDE 中预览 UI 布局。
    • 状态: UI 需要响应的数据,当状态改变时,Compose 会自动重组 受该状态影响的 UI 部分。
    • 状态提升: 将状态和更新状态的逻辑提升到共同父组件中,实现状态共享和单向数据流。
  3. 常用组件

    • Text: 显示文本。
    • **Button`: 可点击的按钮。
    • **Image`: 显示图片。
    • **ColumnRowBox`: 布局组件,分别用于垂直、水平、层叠排列子组件。
    • **Scaffold 提供 Material Design 3 布局结构的脚手架,包含TopAppBarFloatingActionButtonBottomNavigationBar` 等。
    • **LazyColumnLazyRow`: 高效地滚动长列表,只渲染可见项。
  4. 状态管理

    • remember: 在组合期间记住一个对象,在重组时返回同一对象,常用于保存非状态性数据(如 LazyListState)。
    • mutableStateOf: 创建一个可观察的状态对象,当其值改变时,会触发重组。
    • by viewModel.viewModelScope.collectAsState(): 在 Compose 中收集 ViewModel 的 StateFlowLiveData,将 UI 状态与 Compose 链接起来。

Jetpack 核心库

Jetpack 是一系列库的集合,旨在简化 Android 开发。

  1. ViewModel

    • 作用: 在配置更改(如屏幕旋转)时存活,并管理与 UI 相关的数据。
    • 关键类: ViewModel, ViewModelProvider, ViewModelProvider.Factory
    • 最佳实践: 通过 by viewModels() 委托属性在 Activity/Fragment 中安全地获取 ViewModel 实例。
  2. LiveData / StateFlow

    • 作用: 可观察的数据持有者,当数据变化时,它会通知观察者(通常是 UI)。
    • LiveData: 生命周期感知的,只能在主线程观察,比较传统。
    • StateFlow: Kotlin 协程的一部分,是 SharedFlow 的一种特例,更现代、更灵活,支持协程上下文切换,是 Compose + ViewModel 通信的首选
  3. Room

    • 作用: 一个对象映射库,提供本地数据库持久化功能。
    • 三大核心组件:
      • Entity: 数据库表中的实体类(用 @Entity 注解)。
      • DAO (Data Access Object): 定义访问数据库的方法(增删改查)(用 @Dao 注解)。
      • Database: 数据库持有者,并作为应用的 DAO 列表(用 @Database 注解)。
    • 优点: 编译时检查 SQL 查询、支持 RxJava、Flow 和 LiveData。
  4. Navigation Component

    • 作用: 管理应用中的导航,处理 Fragment 之间的跳转、回退栈和参数传递。
    • 核心:
      • NavGraph: 一个包含所有目标(屏幕)和它们之间连接的导航图。
      • NavController: 管理导航图中的导航状态。
      • NavHost: 一个导航容器,用于显示当前目标。
    • 与 Compose 集成: 使用 navigation-compose 库,通过 NavControllerNavHost 实现声明式导航。
  5. WorkManager

    • 作用: 确保后台任务(即使应用退出或设备重启)能够可靠地执行。
    • 特点: 保证至少执行一次,支持约束条件(如网络连接、充电状态)、链式任务和周期性任务。
    • 适用场景: 数据同步、日志上传、备份等不需要立即执行但需要保证完成的任务。
  6. DataStore

    • 作用: 替代 SharedPreferences 的现代解决方案,用于存储键值对。
    • 两种类型:
      • Proto DataStore: 将数据存储为自定义数据类的 Protocol Buffers 类型,类型安全,推荐使用。
      • Preferences DataStore: 将数据存储为键值对,值类型为基本类型或 String
    • 优势: 使用 Flow 进行异步、事务性读取,支持数据迁移。

网络与异步

  1. Retrofit

    • 作用: 类型安全的 HTTP 客户端,用于将 REST API 调用转换为 Kotlin/Java 接口。
    • 核心: 定义接口方法,使用注解(如 @GET, @POST, @Query)描述请求,Retrofit 会为你生成实现。
  2. Kotlinx Coroutines

    • 作用: 处理异步代码的现代方式。
    • 核心概念:
      • 协程: 可以在主线程挂起而不阻塞的轻量级线程。
      • 作用域: 定义协程的生命周期(如 viewModelScope, lifecycleScope)。
      • 调度器: 决定协程在哪个线程运行(如 Dispatchers.Main 用于 UI,Dispatchers.IO 用于网络/磁盘)。
      • 挂起函数: 只能在协程内部或其他挂起函数中调用的函数,用于执行异步操作并暂停协程执行。
  3. 协程 + Retrofit + Room 典型流程

    // 在 ViewModel 的协程作用域中
    viewModelScope.launch(Dispatchers.IO) {
        // 1. 使用 Retrofit 发起网络请求
        val apiResponse = apiService.getData()
        // 2. 将数据存入 Room 数据库
        dao.insertAll(apiResponse.data)
        // 3. 数据库操作完成后,切换到主线程更新 UI 状态
        // (通常通过 StateFlow/LiveData 的 emit 完成,这里只是示意)
        withContext(Dispatchers.Main) {
            // 更新 UI
        }
    }

依赖注入

  • 作用: 减少类之间的硬编码依赖,提高代码的可测试性、模块化和可维护性。
  • 官方推荐库: Hilt
    • 基于 Dagger 构建,但大大简化了配置。
    • 通过 @HiltAndroidApp 注解 Application 类。
    • 使用 @AndroidEntryPoint 注解 Activity、Fragment、Service 等。
    • 使用 @Inject 标记构造函数或属性,@Module@Provides 提供依赖,@EntryPoint 在非 Hilt 管理的类中获取依赖。

应用打包与发布

  1. 构建配置 (build.gradle)

    • compileSdk: 使用最新的 Android API。
    • minSdk: 最低支持的 Android API。
    • targetSdk: 针对、优化过的 Android API。
    • applicationId: 应用的唯一标识符(包名)。
    • versionCode: 整数,用于判断应用版本新旧,上传到 Play Store 必须递增。
    • versionName: 字符串,显示给用户看的版本号(如 "1.0.0")。
  2. 签名 APK / App Bundle

    • 签名: 确保 APK 的来源和完整性。
    • App Bundle (AAB): Google Play 推荐的发布格式,开发者上传 AAB,Google Play 会根据不同设备生成和分发优化的 APK,减小用户安装包大小。
  3. 发布流程

    • Google Play Console: 上传 AAB,管理应用版本、定价、发布、数据分析等。

学习路径建议

  1. 基础入门: 掌握 Kotlin 语法、四大组件、Activity/Fragment 生命周期。
  2. UI 进阶: 学习 Jetpack Compose,这是未来的方向,务必重点掌握。
  3. 架构学习: 深入理解 MVVM 架构,学习使用 ViewModel + StateFlow/LiveData + Navigation
  4. 数据持久化: 学习使用 Room 进行本地数据库存储。
  5. 网络与异步: 掌握 Retrofit + Kotlin Coroutines 的结合使用。
  6. 高级主题: 学习 Hilt 进行依赖注入,了解 WorkManagerDataStore 的应用场景。
  7. 实战项目: 综合运用以上知识,构建一个完整的应用(如天气 App、新闻客户端)。

这份笔记涵盖了新版 Android 开发的核心脉络,祝你在 Android 开发的道路上越走越远!

分享:
扫描分享到社交APP
上一篇
下一篇