Android重构项目的第一步

下面的内容基于MVVM架构,不适用于纯Jetpack Compose的项目

目录结构

com.example.myapp
├── App.kt                  // Application类 (用于初始化Hilt, Timber等)
├── di                      // Dependency Injection (依赖注入模块)
│   ├── NetworkModule.kt    // Retrofit/OkHttp 注入配置
│   └── DatabaseModule.kt   // Room 数据库注入配置
├── data                    // 数据层 (Data Layer)
│   ├── local               // 本地数据源 (Room, SharedPreferences)
│   │   ├── AppDatabase.kt
│   │   ├── dao
│   │   └── entity
│   ├── remote              // 网络数据源 (Retrofit)
│   │   ├── ApiService.kt
│   │   └── model           // 服务端返回的 JSON 实体类 (DTO)
│   ├── repository          // 仓库层 (协调 Local 和 Remote 数据)
│   │   └── UserRepository.kt
│   └── Model.kt            // 领域模型 (App内部使用的纯净Model)
├── ui                      // UI 层 (View & ViewModel)
│   ├── base                // 基类
│   │   ├── BaseActivity.kt
│   │   ├── BaseFragment.kt
│   │   └── BaseViewModel.kt
│   ├── main                // 主界面功能模块
│   │   ├── MainActivity.kt
│   │   └── MainViewModel.kt
│   ├── login               // 登录功能模块
│   │   ├── LoginFragment.kt
│   │   └── LoginViewModel.kt
│   └── adapter             // RecyclerView 适配器 (如通用性强可单独放)
└── utils                   // 工具类和扩展函数
    ├── Constants.kt
    ├── Extensions.kt       // Kotlin 扩展 (ViewExt, StringExt)
    └── DateUtils.kt

开启Viewbinding

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}

导入需要的库和插件

1. 架构组件 (Android Jetpack)

这是 Google 官方的基础设施,用于生命周期管理和导航。

  • Lifecycle & ViewModel: 管理生命周期,防止内存泄漏。
  • Navigation Component: 处理 Fragment 之间的跳转(推荐单 Activity 多 Fragment 架构)。
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.2"
// Lifecycle runtime
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.2"
// Navigation Component
implementation "androidx.navigation:navigation-fragment-ktx:2.7.5"
implementation "androidx.navigation:navigation-ui-ktx:2.7.5"

2. 依赖注入 (Dependency Injection)(可选,有的项目用不到)

  • Hilt: Google 官方推荐,基于 Dagger 但更易用。它能帮你自动管理对象的创建和生命周期(如自动注入 Repository 到 ViewModel)。也可以使用Dagger2。
implementation "com.google.dagger:hilt-android:2.48"
kapt "com.google.dagger:hilt-android-compiler:2.48"

3. 网络请求 (Networking)

  • Retrofit: 业界标准的 HTTP 客户端。
  • OkHttp: Retrofit 的底层支持,用于处理拦截器(Logging, Header)。
  • Moshi (或 Gson): 用于 JSON 解析。Moshi 对 Kotlin 支持更好。
// Retrofit
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-moshi:2.9.0" // 或 converter-gson
// OkHttp Logging (调试接口用)
implementation "com.squareup.okhttp3:logging-interceptor:4.11.0"

4. 异步处理 (Asynchronous)

  • Coroutines (协程): Kotlin 的杀手级特性,用于替代线程池和 RxJava。
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"

5. 图片加载 (Image Loading)

  • Glide: 传统 View 开发中最稳健的选择,API 简单,缓存机制强大。
  • 备选Fresco: 实际占用比Glide更小。
implementation "com.github.bumptech.glide:glide:4.16.0"
//如果你需要其他支持,可以选择导入。例如gif和其他内容管理

6. 其他实用工具

  • Timber: 更好的 Log 打印工具(自动处理 Tag,Release 版自动静音)。
  • LeakCanary: (仅 Debug) 内存泄漏检测神器。
implementation "com.jakewharton.timber:timber:5.0.1"
debugImplementation "com.squareup.leakcanary:leakcanary-android:2.12"
  • AndroidUtilCode: 国内Android开发者几乎都在用的工具集合库
// if u use AndroidX, use the following
implementation 'com.blankj:utilcodex:1.31.1'

// Not in maintenance
implementation 'com.blankj:utilcode:1.30.7'

//文档页面
https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md

总结

XML (Layouts) + ViewBinding + MVVM + Coroutines + Hilt + Retrofit + Jetpack Navigation

一个基础框架的要求很简单:解耦,安全,简洁,可用程度高,上手成本低。如果你有兴趣,可以关注这个文章,之后我会上传打包好的内容!

Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注