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:
+12
-4
@@ -17,13 +17,15 @@
|
||||
param(
|
||||
[string]$DeviceId = '',
|
||||
[string]$Apk = '',
|
||||
[int]$WaitSeconds = 12
|
||||
[int]$WaitSeconds = 12,
|
||||
# 默认校验 debug 包(_dev 后缀),与 release 包并存安装
|
||||
[string]$Package = 'com.lxh.qingting_player.dev'
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Continue' # adb 会往 stderr 写正常提示,用 Stop 会误判
|
||||
$root = Split-Path -Parent $PSScriptRoot
|
||||
if (-not $Apk) { $Apk = Join-Path $root 'build\app\outputs\flutter-apk\app-debug.apk' }
|
||||
$pkg = 'com.lxh.qingting_player'
|
||||
$pkg = $Package
|
||||
|
||||
function Write-Step($msg) { Write-Host "==> $msg" -ForegroundColor Cyan }
|
||||
function Write-Ok($msg) { Write-Host " OK $msg" -ForegroundColor Green }
|
||||
@@ -82,7 +84,13 @@ for ($attempt = 1; $attempt -le 2; $attempt++) {
|
||||
Start-Sleep -Milliseconds 300
|
||||
}
|
||||
& adb -s $DeviceId logcat -c
|
||||
& adb -s $DeviceId shell am start -W -n "$pkg/.MainActivity" 2>&1 | Out-Null
|
||||
# 用 MAIN/LAUNCHER 意图启动:applicationId 带 .dev 后缀时,
|
||||
# "am start -n $pkg/.MainActivity" 会把 .MainActivity 拼到 .dev 上,导致找不到类。
|
||||
# 解析真正的启动组件再启动:applicationId 带 .dev 后缀时,
|
||||
# "$pkg/.MainActivity" 会把 .MainActivity 拼到 .dev 上导致找不到类;
|
||||
# 而 "am start -p $pkg" 在部分 ROM 上又解析不到,所以直接问 PackageManager。
|
||||
$component = (& adb -s $DeviceId shell cmd package resolve-activity --brief $pkg 2>&1 | Select-Object -Last 1).Trim()
|
||||
& adb -s $DeviceId shell am start -W -n $component 2>&1 | Out-Null
|
||||
Start-Sleep -Seconds $WaitSeconds
|
||||
& adb -s $DeviceId logcat -d -v time > $logPath
|
||||
# 注意:PS 5.1 的 > 重定向写出的是 UTF-16LE(带 BOM),读取时不要强制 utf8
|
||||
@@ -106,7 +114,7 @@ if ($players.Count -eq 1) { Write-Ok "Player 唯一:$($players[0])" } else { W
|
||||
# ---------- 系统侧 ----------
|
||||
Write-Step '系统 MediaSession'
|
||||
$sessionIds = @(& adb -s $DeviceId shell dumpsys media_session 2>&1 |
|
||||
Select-String 'media-session com\.lxh\.qingting_player/media-session/(\d+)' |
|
||||
Select-String ("media-session " + [regex]::Escape($pkg) + "/media-session/(\d+)") |
|
||||
ForEach-Object { $_.Matches[0].Groups[1].Value } | Sort-Object -Unique)
|
||||
if ($sessionIds.Count -eq 1) { Write-Ok "MediaSession 唯一:$($sessionIds[0])" }
|
||||
elseif ($sessionIds.Count -eq 0) { Write-Host ' -- 还没有 MediaSession(未开始播放,属正常)' -ForegroundColor DarkGray }
|
||||
|
||||
Reference in New Issue
Block a user