# KtWanAndroid **Repository Path**: PrettyAnt/ktWanAndroid ## Basic Information - **Project Name**: KtWanAndroid - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-12-15 - **Last Updated**: 2026-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: Kotlin, Android ## README # KtWanAndroid - Kotlin 实现的玩 Android 客户端 ## 📱 项目简介 KtWanAndroid 是一个基于 Kotlin 语言开发的 Android 应用,实现了 WanAndroid 网站(玩 Android)的客户端功能。项目采用现代化的 Android 开发架构和技术栈,展示了如何在 Android 开发中应用 MVVM、模块化、依赖注入等最佳实践。 ## 🏗️ 项目架构 ### 技术栈 - **语言**: Kotlin 100% - **架构模式**: MVVM (Model-View-ViewModel) - **依赖注入**: Dagger Hilt - **网络请求**: Retrofit2 + OkHttp3 + Kotlin Coroutines - **路由导航**: ARouter - **数据存储**: MMKV - **UI组件**: Jetpack Navigation、DataBinding、ViewBinding - **构建工具**: Gradle (Kotlin DSL) ### 模块结构 ``` app/ # 主应用模块 ├── src/main/java/com/prettyant/ktwanandroid/ │ ├── KtApplication.kt # Application类 │ ├── MainActivity.kt # 主Activity │ └── SplashActivity.kt # 启动页 │ kt_common/ # 公共模块(核心基础设施) ├── base/ # 基础类 │ ├── BaseActivity.kt │ ├── BaseFragment.kt │ ├── BaseViewModel.kt │ ├── BaseVMActivity.kt │ └── BaseVMFragment.kt ├── network/ # 网络层 │ ├── BaseRepository.kt │ ├── RetrofitManager.kt │ └── interceptor/ # 拦截器 ├── util/ # 工具类 └── di/ # 依赖注入 │ kt_home/ # 首页模块 kt_project/ # 项目模块 kt_navigation/ # 导航模块 kt_login/ # 登录模块 kt_collect/ # 收藏模块 kt_web/ # WebView模块 ``` ## 🚀 快速开始 ### 环境要求 - Android Studio 最新版本 - JDK 17+ - Gradle 8.0+ - Android SDK API 31+ ### 构建配置 项目支持三种构建变体: - **debug**: 开发环境,使用测试 API 地址 - **uat**: 用户验收测试环境 - **release**: 生产环境 ### 构建步骤 1. 克隆项目到本地 ```bash git clone ``` 2. 使用 Android Studio 打开项目 - File → Open → 选择项目根目录 3. 等待 Gradle 同步完成 4. 选择构建变体 - Build Variants 面板 → 选择 `debug` 或 `uat` 5. 运行应用 - 连接 Android 设备或启动模拟器 - Run → Run 'app' ## 📖 核心功能 ### 1. 基础架构 - **BaseActivity/BaseFragment**: 提供统一的生命周期管理和日志记录 - **BaseVMActivity/BaseVMFragment**: MVVM 架构支持,内置懒加载机制 - **BaseViewModel**: 统一的 ViewModel 基类,集成协程支持 ### 2. 网络层 - **RetrofitManager**: 统一的网络请求管理 - **BaseRepository**: 数据仓库基类,统一错误处理 - **拦截器**: - `PrettyHttpLoggingInterceptor`: 增强的日志拦截器,支持 JSON 格式化 - `HeaderInterceptor`: 统一的请求头管理 - `ErrorInterceptor`: 统一错误码处理 - `RetrofitProxyInterceptor`: 动态代理拦截器,支持请求监控 ### 3. 数据管理 - **CookieJar**: 自动化的 Cookie 管理 - **RespStateData**: 响应状态包装,支持加载状态管理 - **BaseStateObserver**: 统一的数据观察者 ### 4. UI 组件 - **CollectRvAdapter**: 收藏列表适配器,支持分页加载 - **SwipeToDeleteCallback**: 滑动删除回调,支持撤销操作 ## 🛠️ 开发指南 ### 创建新模块 1. 在项目根目录创建新模块文件夹(如 `kt_newfeature`) 2. 创建对应的 `build.gradle` 文件 3. 在 `settings.gradle` 中添加模块引用 4. 在主模块的 `build.gradle` 中添加依赖 ### 添加新页面 1. 继承合适的基类: ```kotlin class NewActivity : BaseVMActivity() { override fun getLayoutId(): Int = R.layout.activity_new override fun observe() { // 观察 ViewModel 数据 } override fun initView() { // 初始化 UI 组件 } } ``` 2. 在 ARouter 中注册路由: ```kotlin @Route(path = Constants.PATH_NEW) @AndroidEntryPoint class NewActivity : BaseVMActivity() ``` ### 网络请求 1. 定义 API 接口: ```kotlin interface NewApi { @GET("api/path") suspend fun getData(): BaseResp } ``` 2. 创建 Repository: ```kotlin @Singleton class NewRepo @Inject constructor(private val api: NewApi) : BaseRepository() { suspend fun getData(liveData: RespStateData) { dealResp(callback = { api.getData() }, liveData) } } ``` 3. 在 ViewModel 中使用: ```kotlin @HiltViewModel class NewViewModel @Inject constructor(private val repo: NewRepo) : BaseViewModel() { val data = RespStateData() fun loadData() { launch { repo.getData(data) } } } ``` ## 🔧 配置说明 ### 依赖管理 项目使用统一的 `dependencies.gradle` 管理依赖: - **核心依赖**: Hilt、Retrofit、OkHttp、Coroutines - **UI 依赖**: Navigation、Coil、BannerViewPager - **工具依赖**: ARouter、MMKV、ByteHook ### 构建配置 ```gradle android { compileSdk 36 defaultConfig { minSdk 31 targetSdk 36 versionCode 2 versionName "1.1.0" } buildTypes { debug { buildConfigField "String", "BASE_URL", "\"https://debug-api.example.com/\"" } release { buildConfigField "String", "BASE_URL", "\"https://api.example.com/\"" } uat { buildConfigField "String", "BASE_URL", "\"https://uat-api.example.com/\"" } } } ``` ## 📱 功能模块 ### 首页模块 (kt_home) - 文章列表展示 - Banner 轮播 - 分页加载 ### 项目模块 (kt_project) - 项目分类 - 项目详情 ### 收藏模块 (kt_collect) - 收藏列表 - 取消收藏 - 滑动删除 ### 登录模块 (kt_login) - 用户登录 - 注册功能 ### Web模块 (kt_web) - 内置浏览器 - 文章详情展示 ## 🐛 故障排除 ### 常见问题 1. **ARouter 路由不生效** - 确保在 `dependencies.gradle` 中正确配置了 `kapt "com.alibaba:arouter-compiler:1.5.2"` - 检查模块是否正确添加了 `@Route` 注解 2. **Hilt 依赖注入失败** - 确保 Application 类添加了 `@HiltAndroidApp` 注解 - 检查 Activity/Fragment 是否添加了 `@AndroidEntryPoint` 注解 3. **网络请求失败** - 检查 BASE_URL 配置是否正确 - 确认网络权限已添加 ### 调试技巧 - 使用 `PrettyHttpLoggingInterceptor` 查看详细的网络请求日志 - 启用 ARouter 调试模式:`ARouter.openDebug()` - 查看 Hilt 生成的代码位于 `app/build/generated/source/kapt/` ## 📈 性能优化 ### 已实现优化 1. **懒加载**: BaseVMFragment 实现了智能懒加载机制 2. **内存优化**: 及时释放 DataBinding 引用 3. **网络优化**: 连接超时和重试机制 4. **图片加载**: 使用 Coil 进行图片加载优化 ### 建议优化 1. 实现图片缓存策略 2. 添加数据库缓存层 3. 实施更细粒度的错误处理 ## 🤝 贡献指南 1. Fork 本仓库 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 🙏 致谢 - [WanAndroid API](https://www.wanandroid.com/) - 提供开放的 API 接口 - Jetpack、Retrofit、Dagger Hilt 等开源库的作者和贡献者 ## 📞 联系方式 如有问题或建议,请通过以下方式联系: - 邮箱: prettyant@qq.com - GitHub: [Issues](https://github.com/your-repo/issues) --- **注意**: 本项目为学习交流目的开发,API 数据来源于 WanAndroid 开放平台,请勿用于商业用途。