Android Kotlin 模块化清洁架构项目指南
1. 项目目录结构及介绍
本节详细解析位于 https://github.com/melihaksoy/Android-Kotlin-Modulerized-CleanArchitecture 的开源项目结构,该项目遵循清洁架构原则,采用Kotlin语言构建。
主要模块分布:
-
app: 应用主模块,包含了所有UI相关的组件和集成其他模块的入口点。
features
: 子模块集合,存放具体功能模块的实现,如登录、主页等。presentation
: 展示层逻辑,直接与用户界面交互的代码。di
: 依赖注入(Dependency Injection)相关配置,通常使用Hilt或Dagger进行管理。
-
data: 数据访问层,负责数据的获取和存储,包括本地数据库、网络请求等。
- 包含
repository
(仓库),用于抽象数据来源。 datasource
区分本地与远程数据源。network
: 网络请求模块,如Retrofit配置等。
- 包含
-
domain: 域层,业务逻辑的核心区域,不依赖于任何特定平台的代码。
- 包括核心的UseCase,定义了业务操作。
-
core: 核心工具类,提供可复用的非UI功能,如常量、扩展函数等。
-
entities: 定义了跨层使用的数据模型对象。
-
test: 测试模块,包含单元测试和集成测试案例,确保各层逻辑正确性。
通过这样的结构,项目实现了高度的解耦和模块化,便于维护和扩展。
2. 项目启动文件介绍
项目启动主要由app
模块中的MainActivity.kt
或具有启动Activity标记的Activity负责。由于项目遵循清洁架构,实际的业务启动可能从某个特定的功能模块入口开始,例如通过导航库如Jetpack Navigation控制App的流程。
// 示例:假设在app模块下有一个启动Activity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 设置根布局或是启动Fragment导航
setContent { ... }
// 初始化依赖或启动应用逻辑
AppDependencies.initialize(this)
// 导航到首个屏幕
findNavController(R.id.nav_host_fragment).navigate(R.id.mainFragment)
}
}
请注意,实际的启动过程可能涉及更多的初始化逻辑,依赖于具体的依赖注入框架和导航策略。
3. 项目的配置文件介绍
build.gradle (Module: app)
这是应用模块的主要配置文件,定义了编译依赖、插件版本、以及打包设置。
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt' // 用于处理注解处理器,如Dagger/Hilt
}
android {
compileSdkVersion 31 // 或者更高
defaultConfig {
applicationId "com.example.yourapp"
minSdkVersion 21
targetSdkVersion 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
// Kotlin config
kotlinOptions {
jvmTarget = '1.8'
}
// Other configurations like signingConfigs and flavorDimensions if used.
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" // Kotlin版本
// 其他依赖,如AndroidX库,Retrofit, Hilt等
}
build.gradle (Project)
此文件配置整个项目的全局设置,如版本控制、插件版本等。
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath("com.android.tools.build:gradle:7.0.4") // 或更高版本
classpath("kotlin:kotlin-gradle-plugin:1.5.31") // 对应的Kotlin版本
// 如果使用Hilt则加入以下依赖
classpath "com.google.dagger:hilt-android-gradle-plugin:2.35.1"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
这些配置确保了项目能够顺利编译并引用所需的库,同时定义了构建的基本规则。