Files
LoveLiveMusicPlayerKMP/README.md
2026-08-11 00:33:28 +08:00

80 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LoveLive Music Player — KMP + Compose Multiplatform
与 Flutter 仓库 `LoveLiveMusicPlayerMobile` **并列**。UI 使用 Compose MultiplatformAndroid / 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
```bash
./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/ANoOp | **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 开发者完成的项
1. **Xcode 工程**:创建 App + Widget Extension链接 `ComposeApp.framework``./gradlew :composeApp:linkDebugFrameworkIosSimulatorArm64`
2. **签名 / App Group**`group.top.zhushenwudi.llmp`(已从 Flutter `group.com.zhushenwudi.lovelivemusicplayer` 迁移;见 `iosApp/README.md`
3. **CarPlay entitlement**`com.apple.developer.carplay-audio` + `playable-content` 需 Apple 审批后真机可用
4. **PiP 资源**`black.mp4`Flutter 仓库若缺失需自行放入 `iosApp/iosApp/pip/`
5. **Swift ↔ Kotlin 播放回调**Widget/CarPlay 的 NotificationCenter 事件需在 Mac 上接到 `AppContainer.player`
## 已实现业务(相对骨架)
1. OSS 元数据入库、曲库 6 Tab、播放队列、滚动歌词、Love/歌单/History
2. WiFi 传歌 / 数据同步、驾驶模式、SD/USB、设置、每日推送
3. 桌面歌词 / Widget / 扫码 / WebView / 分享 / 深链 / 友盟桥
4. `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\`