initial commit

This commit is contained in:
2026-08-02 20:00:21 +08:00
commit bea5ead33d
295 changed files with 20101 additions and 0 deletions

79
README.md Normal file
View File

@@ -0,0 +1,79 @@
# 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\`