build+fix: debug 包独立为 .dev,并修复元数据缓存永远查不到
包名: - debug 使用 com.lxh.qingting_player.dev(应用名"清听 Dev"),可与 release 并存 - release 保持 com.lxh.qingting_player - Android 包名每一段必须以字母开头,因此用 .dev 而非 _dev - AGP 9 需显式开启 buildFeatures.resValues;移除 manifest 中已废弃的 package 属性 元数据(两个独立原因叠加): 1. song_key 之前用 String.hashCode / 本地临时文件 mtime,都不稳定; 2. songs.remote_path 存的是完整 URL,而所有查询都用相对路径(song.id), getSongByPath 永远 miss,UI 只能回退到文件名。 - 新增 utils/song_key.dart:songKeyFor(url,size)=md5(url|size),跨进程稳定 - metadata_service: remote_path 改存 fileId(相对路径),并改用稳定 song_key - audio_service / file_provider: 同步使用稳定键 - 数据库升级 v5:清空 songs / metadata_cache(可再生缓存;歌单与收藏按路径存储,不受影响) - device-check.ps1: 支持 -Package,默认校验 dev 包,启动组件改为向 PackageManager 解析 验证:两次独立 dart 进程 song_key 输出一致;真机 debug/release 并存安装,单实例自检通过。
This commit is contained in:
@@ -27,7 +27,7 @@ class SongDatabase {
|
||||
_log('📂 数据库路径: $path');
|
||||
return await openDatabase(
|
||||
path,
|
||||
version: 4, // 升级版本号
|
||||
version: 5, // v5:song_key 改为稳定的 md5
|
||||
onCreate: _onCreate,
|
||||
onUpgrade: _onUpgrade,
|
||||
);
|
||||
@@ -226,6 +226,14 @@ class SongDatabase {
|
||||
await _createPlaybackStateTable(db);
|
||||
}
|
||||
}
|
||||
// ⭐ 升级到版本 5:song_key 由 String.hashCode 改为 md5(url|size|mtime)。
|
||||
// 旧键带进程级随机种子、无法换算;songs / metadata_cache 都是可再生的缓存,
|
||||
// 直接清空,下次播放时按需重建。歌单与收藏按路径(song_id)存储,不受影响。
|
||||
if (oldVersion < 5) {
|
||||
await db.delete('metadata_cache');
|
||||
await db.delete('songs');
|
||||
_log('🧹 已清空 songs / metadata_cache(song_key 算法升级)');
|
||||
}
|
||||
_log('✅ 数据库升级完成');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user