Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 22 additions & 7 deletions items/upgrade.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
# 整个覆盖上去(avd 不动),然后核对:
# - 组包目录按包根清单的版本号是否上升判,缺清单时按构建号判;SDK 构建号相同只记说明。包根的 ModAVD.exe / tools\modavd.exe / tools\modavd-bridge.ps1 都在
# - 用包里的 tools\modavd.exe 开机,标记数据都在
# - set --data-gb 改大后开机扩满(旧模拟器建的 64 GB 盘)
# - 旧模拟器建的 64 GB 盘:新包的 modavd 有「自动扩盘」(0.8.0 起)时,升级后已经扩到 256 GB;
# 没有时 set --data-gb 改大到 80 GB 后开机扩满
# - 升级后第一次用 modavd(管理器同一套)照常开机,旧实例自己装上执行桥(10-30 起用户不用自己装)。
# 旧版建的实例没有开机标记、mas-avd.json 里也没有 bridge 一项:新建后删掉标记来模拟。升级前和查数据、扩盘那几次
# 开机带 --no-bridge(旧模拟器不认标记,也不让装桥打乱前面的核对)。
Expand Down Expand Up @@ -201,13 +202,27 @@ cat /sdcard/Download/upgrade-marker.txt
echo "sdwait=$i lower=$(cat /data/media/0/Download/upgrade-marker.txt 2>&1)"
'@).Replace('@TAG@', $tag)
if (@($m | Where-Object { $_.Trim() -eq $tag }).Count -ne 2) { $problems += "标记数据不对:$($m -join ' / ')" } else { $notes += '旧实例照常开机、数据都在' }
Modavd stop $Index | Out-Null

$o = Modavd set $Index --data-gb 80
if ($LASTEXITCODE -ne 0) { $problems += "set --data-gb 80 失败:$($o -join ' ')" }
$o = Modavd start $Index --no-bridge
$gb = [math]::Round([int64](((SuRun 'df -k /data | tail -n 1') -join ' ') -split '\s+')[1] / 1MB, 1)
if ($gb -lt 78 -or -not ($o -match '数据盘已扩到')) { $problems += "改大到 80 GB 后 /data $gb GB" } else { $notes += "旧版建的 64 GB 盘改大到 80 GB(/data $gb GB)" }
# 管理器 0.8.0 起(ModAVDManager#132,ModAVD/ModAVD#153)数据盘分「自动扩盘 / 指定大小」:没写模式的旧实例算自动扩盘,
# 下次开机前就扩到 256 GB(这一项升级前后都用新包的 modavd 开机,所以多半在升级前那次就扩了),这时再改成 80 GB
# 会被拒(只能改大),所以改为核对升级后已经扩满。
# 新包的 modavd 还没有这两种模式(info 里没有 data_disk_mode)时照旧 set --data-gb 80。
$info = Modavd --json info $Index | Where-Object { $_ -like '{"ok"*' } | Select-Object -Last 1
$cfg = if ($info) { ($info | ConvertFrom-Json).data.config } else { $null }
if ($cfg -and $cfg.PSObject.Properties.Name -contains 'data_disk_mode') {
$gb = [math]::Round([int64](((SuRun 'df -k /data | tail -n 1') -join ' ') -split '\s+')[1] / 1MB, 1)
if ($cfg.data_disk_mode -ne 'auto' -or $cfg.data_partition_gb -lt 256 -or $gb -lt 250) {
$problems += "旧版建的 64 GB 盘升级后没有自动扩盘:模式 $($cfg.data_disk_mode),配置 $($cfg.data_partition_gb) GB,/data $gb GB"
} else { $notes += "旧版建的 64 GB 盘是自动扩盘,升级后 $($cfg.data_partition_gb) GB(/data $gb GB)" }
Modavd stop $Index | Out-Null
} else {
Modavd stop $Index | Out-Null
$o = Modavd set $Index --data-gb 80
if ($LASTEXITCODE -ne 0) { $problems += "set --data-gb 80 失败:$($o -join ' ')" }
$o = Modavd start $Index --no-bridge
$gb = [math]::Round([int64](((SuRun 'df -k /data | tail -n 1') -join ' ') -split '\s+')[1] / 1MB, 1)
if ($gb -lt 78 -or -not ($o -match '数据盘已扩到')) { $problems += "改大到 80 GB 后 /data $gb GB" } else { $notes += "旧版建的 64 GB 盘改大到 80 GB(/data $gb GB)" }
}

# 照常用 modavd 开机:旧实例自己装上执行桥(中间关机再开机一两次)
Modavd stop $Index | Out-Null
Expand Down
2 changes: 1 addition & 1 deletion suites/release.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@
TimeoutMin = 20
}
@{
Id = 'upgrade'; Title = '从上一个生产版本升级(照「怎么更新」整个覆盖新包)'; Criterion = '旧版建的实例照常开机、数据都在;版本号和包根新文件到位;旧盘改大后扩满;升级后 modavd 照常开机自动装好执行桥'
Id = 'upgrade'; Title = '从上一个生产版本升级(照「怎么更新」整个覆盖新包)'; Criterion = '旧版建的实例照常开机、数据都在;版本号和包根新文件到位;旧盘扩满(0.8.0 起自动扩到 256 GB,以前改大到 80 GB);升级后 modavd 照常开机自动装好执行桥'
# 只改输入法、只重新打包时打包前不跑这项:程序没变,打完包用组包目录跑的那次(PostPackage)才有意义
Scopes = @('emulator', 'bridge', 'manager', 'scripts')
Script = '{Repo}\items\upgrade.ps1'
Expand Down