LoveLive Music Player — KMP + Compose Multiplatform
与 Flutter 仓库 LoveLiveMusicPlayerMobile 并列。UI 使用 Compose Multiplatform(Android / iOS 一致);PC 仍为 Electron,本仓库提供协议客户端与共享模型。
包名:top.zhushenwudi.llmp
Maven / Nexus
settings.gradle.kts 已对齐 Flutter android/nexus_repos.gradle:
- 探测
http://192.168.123.100:18081/service/rest/v1/status(2s) - 可达 →
maven-public/google/mob/gradle(插件) /jitpack - 不可达 → 公网
google()/mavenCentral()/gradlePluginPortal()等 - 强制:
-PuseNexus=true|false
模块
| 模块 | 职责 |
|---|---|
:shared |
协议、模型、SQLDelight、OSS、歌词、传歌/同步、Player、Settings、FileSystem、PlatformServices |
:composeApp |
CMP UI + Android 原生(Glance Widget、LyricService、扫码、WebView) |
iosApp/ |
Xcode 脚手架(CarPlay / PiP / WidgetKit),需 macOS 签名链接 |
构建(Windows)
./gradlew.bat :shared:testDebugUnitTest
./gradlew.bat :composeApp:assembleDebug
./gradlew.bat :composeApp:installDebug
Debug APK:composeApp/build/outputs/apk/debug/composeApp-debug.apk
原生功能矩阵
| 功能 | Android | iOS | 状态 |
|---|---|---|---|
| 播放引擎 | ExoPlayer(单实例 + MediaSession) | AVPlayer + MPNowPlaying / RemoteCommand | done |
FileSystem.writeBytes |
完整 | NSData 原子写入 | done |
| 桌面歌词 | LyricService 悬浮窗 + 设置开关 |
PiP(iosApp/pip/*,Swift) |
done(iOS 需 Mac 链 framework) |
| Home Widget | Glance 四样式 + HomeWidgetPreferences |
WidgetKit White/Black(iosApp/WidgetExtension) |
done(iOS 需 Xcode target) |
| CarPlay | 目录模型 CarPlayCatalog(common) |
CarPlaySceneDelegate Tab Music/Album/Mine |
sources done;真机需 Apple carplay-audio entitlement |
深链 llmp:// |
Manifest + DeepLinkHandler |
SceneDelegate + App Group | done |
| USB 挂载监听 | Broadcast + UsbMountMonitor |
N/A(NoOp) | done(Android) |
| 系统分享 | ACTION_SEND |
UIActivity / Notification → Swift | done(最低系统分享) |
| QR 扫码 | ZXing embedded QrScanActivity |
IP 粘贴(相机可在 Swift 补) | done(Android 真扫) |
| 萌娘百科 / 立绘 | WebViewActivity + assets/tachie |
openURL / Safari |
done |
| 友盟 | UmengBridge 反射(key 634bd9c688ccdf4b7e4ac67b) |
需在 Swift 初始化 iOS key | done(Android 反射;SDK 可选) |
| PlatformServices | MainActivity installAndroidPlatformServices |
installIosPlatformServices |
done(非 NoOp 默认) |
仍需 macOS / Apple 开发者完成的项
- Xcode 工程:创建 App + Widget Extension,链接
ComposeApp.framework(./gradlew :composeApp:linkDebugFrameworkIosSimulatorArm64) - 签名 / App Group:
group.top.zhushenwudi.llmp(已从 Fluttergroup.com.zhushenwudi.lovelivemusicplayer迁移;见iosApp/README.md) - CarPlay entitlement:
com.apple.developer.carplay-audio+playable-content需 Apple 审批后真机可用 - PiP 资源:
black.mp4(Flutter 仓库若缺失需自行放入iosApp/iosApp/pip/) - Swift ↔ Kotlin 播放回调:Widget/CarPlay 的 NotificationCenter 事件需在 Mac 上接到
AppContainer.player
已实现业务(相对骨架)
- OSS 元数据入库、曲库 6 Tab、播放队列、滚动歌词、Love/歌单/History
- WiFi 传歌 / 数据同步、驾驶模式、SD/USB、设置、每日推送
- 桌面歌词 / Widget / 扫码 / WebView / 分享 / 深链 / 友盟桥
FeatureModuleIndex模块清单(日志页)
对照
| 主题 | Flutter | 本仓库 |
|---|---|---|
| Nexus | android/nexus_repos.gradle |
settings.gradle.kts |
| 常量 | lib/global/const.dart |
Const.kt |
| 入库 | global_db.dart |
DataImportService |
| 协议 | Docs 03 |
protocol/* + transfer/* |
| 歌词 | global_lyric.dart |
lyric/* + native/LyricService |
| Widget SP | HomeWidgetPreferences |
同名键 |
| CarPlay | lib/pages/carplay/* |
CarPlayCatalog + Swift Scene |
| UI | GetX | composeApp CMP |
文档:E:\LoveLiveMusicPlayer-Docs\
Description
Languages
Kotlin
93%
Swift
6.1%
HTML
0.8%
CSS
0.1%