feat: 发布4×4候选与Android手表应用内键盘组件

这个提交包含在:
sydxky 于 2026-11-14 13:55:53 +08:00 提交
1 父节点 82aeeba816
当前提交 87aa966a51
86 个文件已更改
+2697 -2975

没有与搜索条件相匹配的文件

+81 -81
查看文件
@@ -1,81 +1,81 @@
param(
[Parameter(Mandatory = $true)][string]$ProjectRoot,
[switch]$QuickAppOnly,
[switch]$Clean
)
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$ProjectRoot = (Resolve-Path -LiteralPath $ProjectRoot).Path
$toolBin = Join-Path $PSScriptRoot 'temp\glyphix-v0.7.2-windows-x64\bin'
$gx = Join-Path $toolBin 'gx.exe'
if (-not (Test-Path -LiteralPath $gx)) { throw "Glyphix toolchain not found: $gx" }
$manifestPath = Join-Path $ProjectRoot 'src\manifest.json'
$manifest = Get-Content -LiteralPath $manifestPath -Raw | ConvertFrom-Json
if ($manifest.package -cnotmatch '^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$') {
throw 'Invalid Glyphix package name'
}
$quickAppTargets = @('generic-watch-466x466-quickapp', 'generic-watch-390x450-quickapp')
$targets = if ($QuickAppOnly) {
$quickAppTargets
} else {
@('generic-watch-466x466', 'generic-watch-390x450', 'generic-watch-466x466-quickapp', 'generic-watch-390x450-quickapp')
}
$originalPath = $env:Path
Push-Location $ProjectRoot
try {
$env:Path = "$toolBin;$originalPath"
$availableDevices = @(& $gx list device)
if ($LASTEXITCODE -ne 0) { throw 'Unable to read Glyphix device profiles' }
foreach ($device in $targets) {
if ($availableDevices -cnotcontains $device) { throw "Missing Glyphix device profile: $device" }
}
if ($Clean) {
& $gx clean
if ($LASTEXITCODE -ne 0) { throw 'Glyphix clean failed' }
}
foreach ($device in $targets) {
$arguments = @('build', '-d', $device)
if (-not $device.Contains('quickapp')) { $arguments += '-e' }
$output = @(& $gx @arguments 2>&1 | ForEach-Object { $_.ToString() })
$output | ForEach-Object { Write-Host $_ }
if ($LASTEXITCODE -ne 0 -or ($output -join "`n") -match '(?im)^\s*(?:error|fatal):\s') {
throw "Glyphix build failed for $device"
}
}
foreach ($device in $quickAppTargets) {
$deliveryRoot = Join-Path $ProjectRoot ".glyphix-work\dist\$device\$($manifest.package)"
foreach ($fileName in @('bundle.pkg', 'manifest.json', 'icon.png')) {
$artifact = Join-Path $deliveryRoot $fileName
if (-not (Test-Path -LiteralPath $artifact -PathType Leaf) -or (Get-Item -LiteralPath $artifact).Length -eq 0) {
throw "Missing or empty QuickApp artifact: $artifact"
}
}
$packedManifest = Get-Content -LiteralPath (Join-Path $deliveryRoot 'manifest.json') -Raw | ConvertFrom-Json
if ($packedManifest.package -cne $manifest.package -or
$packedManifest.versionName -cne $manifest.versionName -or
$packedManifest.versionCode -ne $manifest.versionCode) {
throw "QuickApp package/version mismatch: $device"
}
$icon = [IO.File]::ReadAllBytes((Join-Path $deliveryRoot 'icon.png'))
if ($icon.Length -lt 8 -or [Convert]::ToHexString($icon[0..7]) -cne '89504E470D0A1A0A') {
throw "Invalid QuickApp PNG icon: $device"
}
foreach ($fileName in @('bundle.pkg', 'manifest.json', 'icon.png')) {
$artifact = Join-Path $deliveryRoot $fileName
[pscustomobject]@{
Package = $manifest.package
Device = $device
File = $fileName
Bytes = (Get-Item -LiteralPath $artifact).Length
SHA256 = (Get-FileHash -LiteralPath $artifact -Algorithm SHA256).Hash
}
}
}
} finally {
Pop-Location
$env:Path = $originalPath
}
param(
[Parameter(Mandatory = $true)][string]$ProjectRoot,
[switch]$QuickAppOnly,
[switch]$Clean
)
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$ProjectRoot = (Resolve-Path -LiteralPath $ProjectRoot).Path
$toolBin = Join-Path $PSScriptRoot 'temp\glyphix-v0.7.2-windows-x64\bin'
$gx = Join-Path $toolBin 'gx.exe'
if (-not (Test-Path -LiteralPath $gx)) { throw "Glyphix toolchain not found: $gx" }
$manifestPath = Join-Path $ProjectRoot 'src\manifest.json'
$manifest = Get-Content -LiteralPath $manifestPath -Raw | ConvertFrom-Json
if ($manifest.package -cnotmatch '^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$') {
throw 'Invalid Glyphix package name'
}
$quickAppTargets = @('generic-watch-466x466-quickapp', 'generic-watch-390x450-quickapp')
$targets = if ($QuickAppOnly) {
$quickAppTargets
} else {
@('generic-watch-466x466', 'generic-watch-390x450', 'generic-watch-466x466-quickapp', 'generic-watch-390x450-quickapp')
}
$originalPath = $env:Path
Push-Location $ProjectRoot
try {
$env:Path = "$toolBin;$originalPath"
$availableDevices = @(& $gx list device)
if ($LASTEXITCODE -ne 0) { throw 'Unable to read Glyphix device profiles' }
foreach ($device in $targets) {
if ($availableDevices -cnotcontains $device) { throw "Missing Glyphix device profile: $device" }
}
if ($Clean) {
& $gx clean
if ($LASTEXITCODE -ne 0) { throw 'Glyphix clean failed' }
}
foreach ($device in $targets) {
$arguments = @('build', '-d', $device)
if (-not $device.Contains('quickapp')) { $arguments += '-e' }
$output = @(& $gx @arguments 2>&1 | ForEach-Object { $_.ToString() })
$output | ForEach-Object { Write-Host $_ }
if ($LASTEXITCODE -ne 0 -or ($output -join "`n") -match '(?im)^\s*(?:error|fatal):\s') {
throw "Glyphix build failed for $device"
}
}
foreach ($device in $quickAppTargets) {
$deliveryRoot = Join-Path $ProjectRoot ".glyphix-work\dist\$device\$($manifest.package)"
foreach ($fileName in @('bundle.pkg', 'manifest.json', 'icon.png')) {
$artifact = Join-Path $deliveryRoot $fileName
if (-not (Test-Path -LiteralPath $artifact -PathType Leaf) -or (Get-Item -LiteralPath $artifact).Length -eq 0) {
throw "Missing or empty QuickApp artifact: $artifact"
}
}
$packedManifest = Get-Content -LiteralPath (Join-Path $deliveryRoot 'manifest.json') -Raw | ConvertFrom-Json
if ($packedManifest.package -cne $manifest.package -or
$packedManifest.versionName -cne $manifest.versionName -or
$packedManifest.versionCode -ne $manifest.versionCode) {
throw "QuickApp package/version mismatch: $device"
}
$icon = [IO.File]::ReadAllBytes((Join-Path $deliveryRoot 'icon.png'))
if ($icon.Length -lt 8 -or [Convert]::ToHexString($icon[0..7]) -cne '89504E470D0A1A0A') {
throw "Invalid QuickApp PNG icon: $device"
}
foreach ($fileName in @('bundle.pkg', 'manifest.json', 'icon.png')) {
$artifact = Join-Path $deliveryRoot $fileName
[pscustomobject]@{
Package = $manifest.package
Device = $device
File = $fileName
Bytes = (Get-Item -LiteralPath $artifact).Length
SHA256 = (Get-FileHash -LiteralPath $artifact -Algorithm SHA256).Hash
}
}
}
} finally {
Pop-Location
$env:Path = $originalPath
}