第一部分:什么是 Android Bootstrap?
“Android Bootstrap” 并不是一个官方的库或框架,而是一种在 Android 开发社区中广为流传的项目架构和最佳实践集合,它的核心思想是帮助你快速搭建一个结构清晰、易于维护、可测试的 Android 应用程序。

一个典型的 Android Bootstrap 项目通常包含以下几个关键部分:
- 项目结构: 采用功能模块化的结构,而不是传统的包结构。
- 架构模式: 通常采用 MVVM (Model-View-ViewModel) 或 MVP (Model-View-Presenter) 模式,以实现关注点分离。
- 依赖注入: 使用 Hilt 或 Koin 等库来管理依赖,提高代码的解耦和可测试性。
- 异步处理: 使用 Kotlin Coroutines 或 RxJava 来处理耗时操作,避免阻塞主线程。
- 网络请求: 使用 Retrofit 进行网络 API 调用。
- 图片加载: 使用 Coil 或 Glide 加载网络图片。
- 导航: 使用 Jetpack Navigation Component 进行页面导航。
- 数据持久化: 使用 Room 数据库进行本地存储。
在本教程中,我们将以 Hilt + MVVM + Kotlin Coroutines + Retrofit + Navigation + Room 为技术栈,为你构建一个现代化的 Android Bootstrap 项目。
第二部分:准备工作
-
安装环境:
- Android Studio: 最新版本的 Android Studio (推荐 Arctic Fox 或更新版本)。
- JDK: 版本 11 或更高。
- Android SDK: 安合適的 SDK 版本。
-
创建新项目:
(图片来源网络,侵删)- 打开 Android Studio,选择 "File" -> "New" -> "New Project..."。
- 选择 "Empty Views Activity" 模板,然后点击 "Next"。
- 配置你的项目:
- Name:
MyBootstrapApp(或你喜欢的名字) - Package name:
com.example.mybootstrapapp - Save location: 选择项目保存路径
- Language: Kotlin
- Minimum SDK: API 24 (Android 7.0) 或更高
- Name:
- 点击 "Finish" 等待项目构建完成。
第三部分:添加核心依赖
打开你的 app/build.gradle.kts (或 build.gradle) 文件,在 dependencies 代码块中添加以下依赖。
// build.gradle.kts (Module :app)
// ... 其他配置 ...
dependencies {
// Core Android dependencies
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.11.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
// Hilt (Dependency Injection)
implementation("com.google.dagger:hilt-android:2.48")
kapt("com.google.dagger:hilt-compiler:2.48")
// ViewModel & LiveData (MVVM)
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2")
implementation("androidx.activity:activity-ktx:1.8.2") // for by viewModels()
// Navigation Component
implementation("androidx.navigation:navigation-fragment-ktx:2.7.6")
implementation("androidx.navigation:navigation-ui-ktx:2.7.6")
// Retrofit (Networking)
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
// Coil (Image Loading)
implementation("io.coil-kt:coil:2.5.0")
// Room (Database)
implementation("androidx.room:room-runtime:2.6.1")
kapt("androidx.room:room-compiler:2.6.1")
// Kotlin Extensions and Coroutines support for Room
implementation("androidx.room:room-ktx:2.6.1")
}
重要: 确保在 build.gradle.kts (或 build.gradle) 文件顶部添加 kotlin-kapt 插件。
// build.gradle.kts (Module :app)
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-kapt") // 添加这一行
id("dagger.hilt.android.plugin") // Hilt 插件
}
同步你的项目 Gradle。
第四部分:配置项目
启用 ViewBinding
ViewBinding 可以让你更轻松地访问布局文件中的视图,避免使用 findViewById。

在 app/build.gradle.kts 文件中添加 viewBinding:
android {
// ...
buildFeatures {
viewBinding = true // 添加这一行
}
}
配置 Hilt (依赖注入)
在 Application 类中进行 Hilt 的配置。
-
创建一个
Application类:// MyApplication.kt package com.example.mybootstrapapp import android.app.Application import dagger.hilt.android.HiltAndroidApp @HiltAndroidApp class MyApplication : Application()
-
在
AndroidManifest.xml中声明:<!-- app/src/main/AndroidManifest.xml --> <manifest ...> <application android:name=".MyApplication" ...> ... </application> </manifest>
创建 Hilt 的 Application 级别的 @Module
Hilt 需要知道如何提供某些对象,Retrofit 实例,我们创建一个 AppModule 来告诉它。
-
创建
AppModule.kt:// di/AppModule.kt package com.example.mybootstrapapp.di import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) // 这个 Module 只在 Application 生命周期内有效 object AppModule { @Provides @Singleton fun provideOkHttpClient(): OkHttpClient { return OkHttpClient.Builder() .addInterceptor(HttpLoggingInterceptor().apply { level = HttpLoggingInterceptor.Level.BODY }) .build() } @Provides @Singleton fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit { return Retrofit.Builder() .baseUrl("https://jsonplaceholder.typicode.com/") // 一个免费的测试 API .client(okHttpClient) .addConverterFactory(GsonConverterFactory.create()) .build() } }
第五部分:实现核心功能(以获取用户列表为例)
我们将创建一个功能模块,用于从网络获取用户列表并显示在屏幕上。
创建数据模型
-
创建
User数据类:// data/User.kt package com.example.mybootstrapapp.data import com.google.gson.annotations.SerializedName data class User( val id: Int, val name: String, val username: String, @SerializedName("email") val email: String )
创建网络接口
-
创建
ApiService接口:// network/ApiService.kt package com.example.mybootstrapapp.network import com.example.mybootstrapapp.data.User retrofit2.http.GET("users") interface ApiService { @GET suspend fun getUsers(): List<User> }
创建数据源
数据源负责从 API 或数据库获取数据。
-
创建
UserRepository:// repository/UserRepository.kt package com.example.mybootstrapapp.repository import com.example.mybootstrapapp.data.User com.example.mybootstrapapp.network.ApiService import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import javax.inject.Inject
class UserRepository @Inject constructor(
private val apiService: ApiService
) {
fun getUsers(): Flow<List
#### 4. 创建 Room 数据库 (可选 