Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
Melodia

基于 Kotlin + Jetpack Compose 构建的轻量、现代的第三方网易云音乐 Android 客户端

GitHub Release Platform Kotlin License


截图预览

手机

首页 音乐库 播放器 歌词 个人主页

平板

平板竖屏首页 平板竖屏播放侧栏
平板横屏播放侧栏 平板全屏播放页歌词 平板全屏播放页歌曲信息

下载与反馈


项目架构

项目按业务域 (Feature-Driven) 组织代码:core 承载全局共享基础设施与通用能力,feature 下每个独立业务域自持 data / domain / ui 结构。依赖方向单向收敛——feature 依赖 core,core 不反向依赖 feature,各业务域之间解耦无循环依赖。

app/src/main/java/com/lin0721/linmusic/
├── MelodiaApplication.kt        # 应用程序入口:Koin 依赖注入初始化与 Coil 预热
├── MainActivity.kt              # 单 Activity 架构:系统窗口适应与悬浮窗权限引导
├── MelodiaApp.kt                # 顶层组合:导航骨架编排与播放器图层联动
├── MelodiaNavHost.kt            # 核心路由分发与平滑转场动画配置
├── MelodiaOverlays.kt           # 全屏播放器底栏、底部弹窗与全局反馈浮层
├── MelodiaNavigationState.kt    # 自定义导航回退栈管理与参数上下文恢复
├── MelodiaPlayerSheetState.kt   # 全屏播放器展开/收起手势状态机
├── MelodiaSidebarState.kt       # 侧边栏抽屉滑动状态机
│
├── core/                        # 跨域共享基础能力
│   ├── api/                     # 账号鉴权与公共接口定义
│   ├── auth/                    # 登录状态、凭据持久化与用户信息同步
│   ├── comment/                 # 评论通用数据流与 UI 组件
│   ├── contentfilter/           # 内容屏蔽与黑名单过滤
│   ├── log/                     # 日志输出与异常捕获
│   ├── model/                   # 全局领域数据模型与实体映射
│   ├── network/                 # 原生加密引擎、OkHttp 拦截器与统一网络适配
│   ├── player/                  # 播放器核心引擎(ExoPlayer、队列调度、进度广播)
│   ├── playlistmutation/        # 歌单创建/编辑、歌曲增删与排序操作
│   ├── preferences/             # DataStore 与轻量级配置持久化
│   ├── songlike/                # 歌曲红心收藏状态管理
│   ├── ui/                      # Material 3 主题、通用交互组件与动画规范
│   ├── update/                  # 应用内更新检测、下载管理器与安装器组件
│   ├── userartist/              # 用户关注歌手列表管理
│   └── userplaylist/            # 用户歌单状态与列表维护
│
├── di/                          # Koin 依赖注入模块(Network, Local, Repository, Player, Update, ViewModel)
│
└── feature/                     # 业务功能域(各自包含 data / domain / ui)
    ├── account/                 # 账号登录与授权管理
    ├── artist/                  # 歌手主页、热门单曲与全部专辑
    ├── cloud/                   # 用户云盘资产管理
    ├── create/                  # 歌单新建与快捷操作
    ├── home/                    # 首页聚合流(推荐单曲/歌单、雷达)
    ├── library/                 # 个人音乐库(分类筛选与检索)
    ├── listendata/              # 年度/周听歌数据与足迹统计
    ├── message/                 # 私信与系统通知中心
    ├── music/                   # 音乐发现 Tab(风格流派与个性化推荐)
    ├── newworks/                # 新歌首发与数字专辑
    ├── player/                  # 全屏播放、动态歌词与歌曲详情交互
    ├── playlist/                # 歌单/专辑详情与音轨列表
    ├── podcast/                 # 电台播客节目
    ├── profile/                 # 用户个人主页与听歌排行
    ├── recent/                  # 最近播放历史记录
    ├── search/                  # 多模式实时搜索与热搜榜
    └── settings/                # 主题、音质、网络与缓存配置

统一错误处理

Repository 边界统一产出 Kotlin Result<T>,异常类型抽象为领域错误模型 AppError(包括网络中断、风控拦截、鉴权过期、数据解析失败及业务错误码)。UI 表现层针对不同错误语义分流呈现对应的重试引导或提示。


构建与开发

环境要求

  • JDK:Java 21(推荐 Eclipse Temurin 21)
  • Gradle:9.3+(项目内置 Gradle Wrapper 9.3.1)
  • Android Gradle Plugin (AGP):9.1.1+
  • Android SDK:Compile / Target SDK 36,Min SDK 26 (Android 8.0+)
  • IDE:Android Studio Ladybug (2024.2.1) 或更高版本

常用命令

  • 调试构建:
    ./gradlew assembleDebug
  • 运行单元测试:
    ./gradlew testDebugUnitTest
  • 构建 Release 安装包:
    ./gradlew assembleRelease

混淆与签名说明

  • 代码裁剪与混淆:release 构建已开启 R8 压缩与混淆保护。项目对 Retrofit 接口与 @Serializable 数据传输类配置了显式 Keep 规则,确保混淆后的运行安全。
  • 签名机制:签名材料从版本控制外部注入(读取 local.properties 或 CI 环境变量)。若未配置正式签名,将自动回退为 Debug 签名,确保本地可编译出可运行的 APK。完整签名与自动化发版配置请参阅 RELEASE_SIGNING.md。
  • CI 流水线:向 main 分支推送或提交 PR 时自动触发单元测试与 Release 构建验证;推送版本 Tag 时触发正式签名打包并发布 GitHub Release。

非常感谢


免责声明

  1. 本项目为个人技术交流与 Android 现代原生架构学习研究所用。
  2. 本项目不包含任何商业目的,不提供任何形式的商业变现或增值服务。
  3. 软件中调用的所有音频及元数据均来源于公开网络接口,版权归属于原权利人所有。请在下载安装后 24 小时内删除,严禁用于任何商业用途。

关于 About

基于 Kotlin + Jetpack Compose 构建的现代化、轻量级第三方网易云音乐客户端。
androidjetpack-composekoinkotlinmaterial3media3music-playerneteasenetease-cloud-musicnetease-musicopen-sourcespotifythird-party-client

语言 Languages

Kotlin97.9%
JavaScript2.0%
AIDL0.0%
HTML0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
382
Total Commits
峰值: 75次/周
Less
More

核心贡献者 Contributors