第一章:项目概述与环境搭建

第一章:项目概述与环境搭建

本文将带你从零开始认识 MyFirstCompose 项目,了解其整体架构与技术选型。


1.1 项目简介

MyFirstCompose 是一个基于 Jetpack Compose 开发的入门级 Android 应用,采用 单 Activity + MVVM + Repository 架构模式。

学习目标:

  • 理解 Compose 的声明式 UI 编程思想
  • 掌握 MVVM 架构的数据流向
  • 学会使用 Navigation Compose 进行页面跳转
  • 了解网络请求与本地缓存的基本模式

项目功能:

页面 功能说明
首页 商品列表搜索、排序、轮播图
个人中心 用户信息展示、通知开关
详情页 商品详情查看

1.2 技术栈一览

kotlin 复制代码
// build.gradle.kts (app)
dependencies {
    // Compose BOM 管理版本
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.ui)
    implementation(libs.androidx.material3)
    
    // ViewModel + StateFlow
    implementation(libs.androidx.lifecycle.viewmodel.compose)
    
    // Navigation
    implementation("androidx.navigation:navigation-compose:2.7.7")
    
    // 网络请求
    implementation("com.squareup.retrofit2:retrofit:2.9.0")
    implementation("com.squareup.retrofit2:converter-gson:2.9.0")
    
    // 图片加载
    implementation("io.coil-kt:coil-compose:2.6.0")
    
    // 协程
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
}
类别 技术选型
UI 框架 Jetpack Compose + Material3
架构模式 MVVM + Repository
导航 Navigation Compose 2.7.7
网络 Retrofit 2.9 + Gson
图片 Coil 2.6
异步 Kotlin Coroutines + StateFlow

1.3 项目结构

复制代码
app/src/main/java/com/example/myfirstcompose/
├── MainActivity.kt              # 入口,启动 NavHost
├── navigation/
│   ├── AppNavGraph.kt           # 导航图 + 路由注册
│   └── AppRoutes.kt             # 路由常量(避免魔法字符串)
├── data/
│   ├── api/
│   │   ├── ApiService.kt        # Retrofit 接口定义
│   │   └── RetrofitManager.kt   # 单例 Retrofit 构建器
│   ├── model/
│   │   ├── ArticleBean.kt       # 商品/文章数据模型
│   │   ├── ProductListResponse.kt
│   │   └── ProfileUser.kt       # 用户数据模型
│   └── repository/
│       ├── ArticleRepository.kt # 文章列表网络 + 内存缓存
│       └── ProfileRepository.kt # 用户本地示例数据
└── ui/
    ├── component/
    │   ├── ArticleItem.kt       # 列表项卡片
    │   ├── ArticleImage.kt      # 图片组件(预览占位)
    │   └── BannerView.kt        # 轮播图
    ├── page/
    │   ├── home/                # 首页:列表 + 搜索 + 排序
    │   ├── profile/            # 个人中心:用户信息 + 设置
    │   └── detail/             # 详情页:商品详情
    └── theme/
        ├── Theme.kt            # Material3 主题
        ├── Color.kt            # 颜色定义
        └── Type.kt             # 字体样式

1.4 核心依赖版本

toml 复制代码
# gradle/libs.versions.toml
[versions]
agp = "8.11.2"
kotlin = "2.0.21"
composeBom = "2024.09.00"
lifecycleRuntimeKtx = "2.10.0"
navigationCompose = "2.7.7"
retrofit = "2.9.0"
coil = "2.6.0"
coroutines = "1.7.3"

最低兼容: API 24(Android 7.0)
编译 SDK: API 36


1.5 入口解析

kotlin 复制代码
// MainActivity.kt
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            AppNavGraph()  // 整个应用只有一个 Composable 入口
        }
    }
}

要点: Compose 应用不需要 XML 布局,所有 UI 都是用 Kotlin 代码声明的。


1.6 总结

  • 项目采用单 Activity 多页面架构,通过 Navigation Compose 管理页面流转
  • 数据层使用 Repository 模式,网络请求与本地缓存分离
  • 三个页面(首页/个人中心/详情)均采用相同的 MVVM + sealed UiState 模式
  • 技术栈简洁,适合 Compose 入门学习

下一章我们将学习 第二章:Compose 入门 --- 声明式 UI 编程

相关推荐
愚公搬代码19 小时前
【愚公系列】《移动端AI应用开发》017-Android端应用开发(网络通信与API集成)
android·人工智能
say_fall19 小时前
可编程中断控制器8259A工作方式超详细解析
android·开发语言·学习·硬件架构·硬件工程
甜瓜看代码20 小时前
SystemUI 启动与组成机制
android·源码·源码阅读
黄林晴21 小时前
Kotlin 2.4.0 正式稳定!Android 升级、Compose、KMP 全变化详解
android·kotlin
恋猫de小郭1 天前
Android 官方给 Compose 搞了个不需要 UI 环境的 Composable
android·前端·flutter
珊瑚里的鱼1 天前
C++的强制类型转换
android·开发语言·c++
问心无愧05131 天前
ctf show web入门102
android·java·前端·笔记
Kapaseker1 天前
Kotlin 相等的奥义
android·kotlin
Lyyaoo.1 天前
【MySQL】锁机制
android·数据库·mysql
DS随心转插件1 天前
DeepSeek 代码手机端导出与 AI 辅助方案实测
android·人工智能·chatgpt·智能手机·deepseek·ai导出鸭