Skip to content

Commit 0309299

Browse files
committed
优化代码以及更新文档说明
1 parent a26f25f commit 0309299

56 files changed

Lines changed: 698 additions & 21 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ local.properties
1616
/.idea/
1717
/android-project-compose-docs/
1818
/context/
19+
/blog_post.md

README.md

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
<div align="center">
2+
3+
<img src="docs/images/graphs/logo.svg" width="120" alt="Logo"/>
4+
5+
# AndroidProject-Compose
6+
7+
_一个 Android 快速开发框架_
8+
9+
<!-- 语言切换按钮 -->
10+
<div align="center">
11+
<a href="README_EN.md">🌍 English</a>
12+
</div>
13+
14+
[![GitHub](https://img.shields.io/badge/GitHub-AndroidProjectCompose-blue?style=flat-square&logo=github)](https://github.com/Joker-x-dev/AndroidProject-Compose)
15+
[![Gitee](https://img.shields.io/badge/Gitee-AndroidProjectCompose-red?style=flat-square&logo=gitee)](https://gitee.com/Joker-x-dev/AndroidProject-Compose)
16+
[![Demo](https://img.shields.io/badge/Demo-蒲公英下载-green?style=flat-square&logo=android)](https://www.pgyer.com/AndroidProject-Compose)
17+
[![API](https://img.shields.io/badge/Docs-compose.dusksnow.top-orange?style=flat-square&logo=readthedocs)](https://compose.dusksnow.top)
18+
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/Joker-x-dev/AndroidProject-Compose)
19+
20+
</div>
21+
22+
## 📖 项目简介
23+
24+
AndroidProject-Compose 是一个包含网络、状态、导航、主题、数据存储、数据库等基础能力的 **Jetpack Compose 单模块脚手架**,并提供少量功能示例页面,方便你“拉仓库 → 运行 → 填业务”地快速搭建或学习现代 Compose 应用。
25+
26+
> 如果项目对您有帮助,请给个 Star 支持 ⭐ 这对我来说很重要,能给我带来长期更新维护的动力!
27+
28+
## 📱 项目预览
29+
30+
<img src="docs/images/preview/page.png" alt="page"/>
31+
32+
### 📍 项目地址
33+
34+
- **GitHub 地址**[https://github.com/Joker-x-dev/AndroidProject-Compose](https://github.com/Joker-x-dev/AndroidProject-Compose)
35+
- **Gitee 地址**[https://gitee.com/Joker-x-dev/AndroidProject-Compose](https://gitee.com/Joker-x-dev/AndroidProject-Compose)
36+
37+
> 本脚手架源于青商城的实践,仅保留基础能力与功能示例;完整电商业务与全量 UI/动效/完整业务示例请查看青商城:GitHub https://github.com/Joker-x-dev/CoolMallKotlin | Gitee https://gitee.com/Joker-x-dev/CoolMallKotlin
38+
39+
### Demo 下载
40+
41+
**Release 版本(2MB)**[点击下载体验](https://www.pgyer.com/AndroidProject-Compose)
42+
- **支持系统**:Android 6.0 及以上
43+
- **更新说明**:预览版本会不定时更新,可能不会完全同步最新的代码变更
44+
45+
### 说明文档
46+
47+
- **说明文档**[在线查看](https://compose.dusksnow.top)
48+
- **说明**:与代码同步的在线文档,包含快速开始、架构说明、示例路由、常见定制点等,便于理解项目与学习。
49+
50+
## 🛠️ 技术栈
51+
52+
### 核心技术
53+
54+
| 类别 | 技术选型 | 版本号 | 说明 |
55+
|-------|---------------------------|------------|-------------------|
56+
| 编程语言 | Kotlin | 2.2.21 | 100% Kotlin 开发 |
57+
| UI 框架 | Jetpack Compose | 2025.11.01 | 声明式 UI 框架 |
58+
| 依赖注入 | Hilt | 2.57.2 | 基于 Dagger 的依赖注入框架 |
59+
60+
### 功能模块
61+
62+
| 类别 | 技术选型 | 版本号 | 说明 |
63+
|-------|-----------------------|---------------|------------------|
64+
| 导航 | Navigation Compose | 2.9.6 | Compose 导航组件 |
65+
| 网络请求 | Retrofit + OkHttp | 3.0.0 + 5.3.2 | HTTP 客户端 |
66+
67+
### 数据存储
68+
69+
| 类别 | 技术选型 | 版本号 | 说明 |
70+
|------|------|-------|------------|
71+
| 数据库 | Room | 2.8.4 | SQLite 数据库 |
72+
| 本地存储 | MMKV | 2.2.4 | 高性能键值存储 |
73+
74+
### 开发工具
75+
76+
| 类别 | 技术选型 | 版本号 | 说明 |
77+
|------|---------------|--------|-------------|
78+
| 日志框架 | Timber | 5.0.1 | 日志管理 |
79+
| 网络调试 | Chucker | 4.2.0 | 网络请求监控 |
80+
| 内存检测 | LeakCanary | 2.14 | 内存泄漏检测 |
81+
82+
## 📱 功能模块目录
83+
84+
- **主模块 (main)**
85+
- 主页面 (main)
86+
- 基础能力示例 (core-demo)
87+
- 导航示例 (navigation-demo)
88+
89+
90+
- **认证模块 (auth)**
91+
- 登录页 (login)
92+
93+
94+
- **用户模块 (user)**
95+
- 用户信息 (info)
96+
97+
98+
- **示例模块 (demo)**
99+
- 通用网络请求示例 (network-demo)
100+
- 通用分页列表示例 (network-list-demo)
101+
- 数据库示例 (database)
102+
- 本地存储示例 (local-storage)
103+
- 状态管理示例 (state-management)
104+
- 网络请求示例 (network-request)
105+
- 带参跳转示例 (navigation-with-args)
106+
- 结果回传示例 (navigation-result)
107+
108+
## 项目结构
109+
110+
```
111+
├── app/ # 应用入口
112+
├── core/ # 核心
113+
│ ├── base/ # 基础抽象
114+
│ ├── data/ # 数据层
115+
│ ├── database/ # 数据库
116+
│ ├── datastore/ # 数据存储
117+
│ ├── designsystem/ # 设计系统
118+
│ ├── model/ # 数据模型
119+
│ ├── network/ # 网络层
120+
│ ├── result/ # 结果处理
121+
│ ├── state/ # 状态管理
122+
│ ├── ui/ # UI 组件
123+
│ └── util/ # 工具类
124+
├── navigation/ # 导航模块
125+
│ ├── routes/ # 路由定义
126+
│ ├── results/ # 路由返回结果
127+
│ └── extension/ # 导航扩展
128+
├── feature/ # 功能模块
129+
│ ├── main/ # 主模块
130+
│ ├── auth/ # 认证模块
131+
│ ├── user/ # 用户模块
132+
│ └── demo/ # 示例模块
133+
└── MainActivityViewModel.kt # 宿主级共享 ViewModel
134+
```
135+
136+
## 👥 加入群聊
137+
138+
欢迎加入开发者交流群,一起分享学习心得,讨论技术问题!
139+
140+
<div align="left">
141+
<img src="docs/images/group/qq.jpg" width="200" alt="QQ群二维码"/>
142+
<p>扫码或搜索群号加入 QQ 群</p>
143+
</div>
144+
145+
## 🤝 参与贡献
146+
147+
这是一个开放的学习项目,欢迎所有对 Android 开发感兴趣的开发者参与贡献!
148+
149+
### 🎯 贡献方式
150+
151+
- **代码贡献**: 提交 Pull Request,完善功能实现或修复问题
152+
- **问题反馈**: 通过 Issue 报告 Bug 或提出功能建议
153+
- **文档优化**: 完善项目文档、添加使用说明或开发指南
154+
- **设计支持**: 提供 UI/UX 设计建议或素材资源
155+
- **测试协助**: 参与功能测试,提供使用反馈和改进建议
156+
157+
### 📋 贡献指南
158+
159+
- 提交代码前请确保遵循项目的编码规范
160+
- 新功能开发建议先创建 Issue 讨论可行性
161+
- 欢迎分享学习心得和技术总结

README_EN.md

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
<div align="center">
2+
3+
<img src="docs/images/graphs/logo.svg" width="120" alt="Logo"/>
4+
5+
# AndroidProject-Compose
6+
7+
_A fast-start Android framework built with Jetpack Compose_
8+
9+
<!-- Language Switch Button -->
10+
<div align="center">
11+
<a href="README.md">🌍 中文</a>
12+
</div>
13+
14+
[![GitHub](https://img.shields.io/badge/GitHub-AndroidProjectCompose-blue?style=flat-square&logo=github)](https://github.com/Joker-x-dev/AndroidProject-Compose)
15+
[![Gitee](https://img.shields.io/badge/Gitee-AndroidProjectCompose-red?style=flat-square&logo=gitee)](https://gitee.com/Joker-x-dev/AndroidProject-Compose)
16+
[![Demo](https://img.shields.io/badge/Demo-Download-green?style=flat-square&logo=android)](https://www.pgyer.com/AndroidProject-Compose)
17+
[![API](https://img.shields.io/badge/Docs-compose.dusksnow.top-orange?style=flat-square&logo=readthedocs)](https://compose.dusksnow.top)
18+
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/Joker-x-dev/AndroidProject-Compose)
19+
20+
</div>
21+
22+
## 📖 Project Overview
23+
24+
AndroidProject-Compose is a **single-module Jetpack Compose scaffold** that ships with the essential building blocks for networking, state, navigation, theming, data storage, and database access. It also includes a few feature demo pages so you can “clone → run → plug in your business logic” to quickly build or learn a modern Compose app.
25+
26+
> If this project helps you, please give it a Star ⭐ It means a lot and keeps me motivated to maintain and update the project long-term!
27+
28+
## 📱 Preview
29+
30+
<img src="docs/images/preview/page.png" alt="page"/>
31+
32+
### 📍 Project Links
33+
34+
- **GitHub**: [https://github.com/Joker-x-dev/AndroidProject-Compose](https://github.com/Joker-x-dev/AndroidProject-Compose)
35+
- **Gitee**: [https://gitee.com/Joker-x-dev/AndroidProject-Compose](https://gitee.com/Joker-x-dev/AndroidProject-Compose)
36+
37+
> This scaffold originates from the CoolMall practice project and keeps only the foundational capabilities plus sample pages. For the full e-commerce business, complete UI/animations, and full-featured demos, see CoolMall: GitHub https://github.com/Joker-x-dev/CoolMallKotlin | Gitee https://gitee.com/Joker-x-dev/CoolMallKotlin
38+
39+
### Demo Download
40+
41+
**Release build (2MB)**: [Download](https://www.pgyer.com/AndroidProject-Compose)
42+
- **Supported OS**: Android 6.0 and above
43+
- **Release notes**: Preview builds update occasionally and may not always reflect the latest code changes
44+
45+
### Documentation
46+
47+
- **Docs**: [View online](https://compose.dusksnow.top)
48+
- **Note**: Online docs stay in sync with the code and cover quick start, architecture, sample routes, common customization points, and more.
49+
50+
## 🛠️ Tech Stack
51+
52+
### Core Technologies
53+
54+
| Category | Technology | Version | Description |
55+
|-----------------------|---------------------|------------|------------------------------|
56+
| Programming Language | Kotlin | 2.2.21 | 100% Kotlin |
57+
| UI Framework | Jetpack Compose | 2025.11.01 | Declarative UI framework |
58+
| Dependency Injection | Hilt | 2.57.2 | Dagger-based DI framework |
59+
60+
### Feature Modules
61+
62+
| Category | Technology | Version | Description |
63+
|------------|------------------------|---------------|---------------------------|
64+
| Navigation | Navigation Compose | 2.9.6 | Compose navigation |
65+
| Network | Retrofit + OkHttp | 3.0.0 + 5.3.2 | HTTP client |
66+
67+
### Data Storage
68+
69+
| Category | Technology | Version | Description |
70+
|---------------|------------|---------|----------------------------------|
71+
| Database | Room | 2.8.4 | SQLite database |
72+
| Local Storage | MMKV | 2.2.4 | High-performance key-value store |
73+
74+
### Development Tools
75+
76+
| Category | Technology | Version | Description |
77+
|-------------------|------------|---------|------------------------|
78+
| Logging | Timber | 5.0.1 | Log management |
79+
| Network Debugging | Chucker | 4.2.0 | Network request monitor|
80+
| Memory Leak Check | LeakCanary | 2.14 | Memory leak detection |
81+
82+
## 📱 Feature Module Directory
83+
84+
- **Main Module (main)**
85+
- Main page (main)
86+
- Core capability demos (core-demo)
87+
- Navigation demos (navigation-demo)
88+
89+
- **Auth Module (auth)**
90+
- Login (login)
91+
92+
- **User Module (user)**
93+
- User info (info)
94+
95+
- **Demo Module (demo)**
96+
- Generic network request demo (network-demo)
97+
- Generic paged list demo (network-list-demo)
98+
- Database demo (database)
99+
- Local storage demo (local-storage)
100+
- State management demo (state-management)
101+
- Network request demo (network-request)
102+
- Navigation with args (navigation-with-args)
103+
- Navigation result passing (navigation-result)
104+
105+
## Project Structure
106+
107+
```
108+
├── app/ # App entry
109+
├── core/ # Core
110+
│ ├── base/ # Base abstractions
111+
│ ├── data/ # Data layer
112+
│ ├── database/ # Database
113+
│ ├── datastore/ # Data storage
114+
│ ├── designsystem/ # Design system
115+
│ ├── model/ # Data models
116+
│ ├── network/ # Network layer
117+
│ ├── result/ # Result handling
118+
│ ├── state/ # State management
119+
│ ├── ui/ # UI components
120+
│ └── util/ # Utilities
121+
├── navigation/ # Navigation module
122+
│ ├── routes/ # Route definitions
123+
│ ├── results/ # Route results
124+
│ └── extension/ # Navigation extensions
125+
├── feature/ # Feature modules
126+
│ ├── main/ # Main module
127+
│ ├── auth/ # Auth module
128+
│ ├── user/ # User module
129+
│ └── demo/ # Demo module
130+
└── MainActivityViewModel.kt # Host-level shared ViewModel
131+
```
132+
133+
## 👥 Join the Community
134+
135+
Welcome to the developer group—share learning notes and discuss technical questions together!
136+
137+
<div align="left">
138+
<img src="docs/images/group/qq.jpg" width="200" alt="QQ group QR code"/>
139+
<p>Scan or search the group number to join the QQ group</p>
140+
</div>
141+
142+
## 🤝 Contributing
143+
144+
This is an open learning project. All Android enthusiasts are welcome to contribute!
145+
146+
### 🎯 How to Contribute
147+
148+
- **Code Contributions**: Submit pull requests to improve features or fix issues
149+
- **Issue Feedback**: Report bugs or suggest features via Issues
150+
- **Documentation**: Enhance docs, add usage guides or developer guides
151+
- **Design Support**: Provide UI/UX suggestions or assets
152+
- **Testing Help**: Join feature testing and share feedback
153+
154+
### 📋 Contribution Guidelines
155+
156+
- Please follow the project coding conventions before submitting code
157+
- For new features, create an Issue first to discuss feasibility
158+
- Sharing learning notes and technical takeaways is encouraged

app/proguard-rules.pro

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,13 @@
2020
# hide the original source file name.
2121
#-renamesourcefileattribute SourceFile
2222

23-
# toast 混淆规则
24-
-keep class com.hjq.toast.** {*;}
25-
26-
# xxp权限混淆规则
27-
-keep class com.hjq.permissions.** { *; }
23+
# xxp权限混淆规则 地址: https://github.com/getActivity/XXPermissions/blob/master/library/proguard-permissions.pro
24+
-keepclassmembers interface com.hjq.permissions.start.IStartActivityDelegate {
25+
<methods>;
26+
}
27+
-keepclassmembers interface com.hjq.permissions.fragment.IFragmentMethodNative {
28+
<methods>;
29+
}
30+
-keepclassmembers class androidx.fragment.app.Fragment {
31+
androidx.fragment.app.FragmentActivity getActivity();
32+
}

app/src/main/java/com/joker/kit/core/model/entity/User.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.joker.kit.core.model.entity
22

3+
import androidx.annotation.Keep
4+
35
import kotlinx.serialization.Serializable
46

57
/**
@@ -18,6 +20,7 @@ import kotlinx.serialization.Serializable
1820
* @param updateTime 更新时间
1921
* @author Joker.X
2022
*/
23+
@Keep
2124
@Serializable
2225
data class User(
2326

app/src/main/java/com/joker/kit/core/model/network/NetworkResponse.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.joker.kit.core.model.network
22

3+
import androidx.annotation.Keep
4+
35
import kotlinx.serialization.Serializable
46

57
/**
@@ -11,6 +13,7 @@ import kotlinx.serialization.Serializable
1113
* @param message 出错的提示信息
1214
* @author Joker.X
1315
*/
16+
@Keep
1417
@Serializable
1518
data class NetworkResponse<T>(
1619
/**

app/src/main/java/com/joker/kit/core/network/service/UserInfoService.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.joker.kit.core.network.service
22

3+
import androidx.annotation.Keep
4+
35
import com.joker.kit.core.model.entity.User
46
import com.joker.kit.core.model.network.NetworkResponse
57
import retrofit2.http.GET
@@ -9,6 +11,7 @@ import retrofit2.http.GET
911
*
1012
* @author Joker.X
1113
*/
14+
@Keep
1215
interface UserInfoService {
1316

1417
/**

0 commit comments

Comments
 (0)