From ca63bd1fb5b3a88871ae4ccbf303d25567036c24 Mon Sep 17 00:00:00 2001 From: RyuJongJin <266630912+RyuJongJin@users.noreply.github.com> Date: Mon, 19 Oct 2026 23:17:25 +0900 Subject: [PATCH] =?UTF-8?q?WIP=20=EC=8B=9C=ED=97=98=ED=8C=90=20=EA=B2=80?= =?UTF-8?q?=EC=82=AC=20=EB=8F=84=EA=B5=AC:=20=EC=88=9C=EB=B2=88=20900=20?= =?UTF-8?q?=EC=9D=B4=EC=83=81=EC=9D=98=20v=20=ED=83=9C=EA=B7=B8=20(?= =?UTF-8?q?=EC=8B=9C=ED=97=98=ED=8C=90=20Pre-release)=20=EB=8A=94=20?= =?UTF-8?q?=EC=A0=95=EC=8B=9D=20=ED=8C=90=EC=9C=BC=EB=A1=9C=20=EB=B3=B4?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9D=8C=20=C2=B7=20=EC=A0=95=EC=8B=9D=20?= =?UTF-8?q?=ED=8C=90=20(-Release)=20=EC=9D=B8=EB=8D=B0=20=EC=88=9C?= =?UTF-8?q?=EB=B2=88=20900=20=EC=9D=B4=EC=83=81=EC=9D=B4=EB=A9=B4=20?= =?UTF-8?q?=EC=8B=A4=ED=8C=A8=20(=EA=B2=80=ED=86=A0=20=EB=8C=80=EA=B8=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 관리자 지시 (10/19, 28 지적): 시험판에 태그 (예: v2026.10.18_977) 를 단 뒤 같은 APK 를 tool/check_apk.ps1 로 다시 검사하면 "시험판인데 정식 판 v2026.10.18_977 과 같음" 으로 거짓 실패했다 (그 태그를 정식 판으로 봄). 거꾸로 977 APK 에 -Release 를 주면 통과했다. - check_apk.ps1: 정식 판 태그는 순번 900 미만만. -Release 인데 versionCode 의 순번이 900 이상이면 실패 ("시험판 번호입니다"). - check_windows_build.ps1: 원래 태그를 보지 않아 거짓 실패는 없었다. -Release 인데 순번이 900 이상이면 실패하도록 같은 규칙을 맞춤 (전에는 1000 이상만). 확인 (실제 파일): - APK 977 (release\test\977): -Release 없이 통과, -Release 면 실패 / APK 001 (정식 판): -Release 통과, -Release 없이 실패 (정식 판 번호). - Windows 977 (release\test\977\stage): -Release 없이 통과, -Release 면 실패 / Windows 001 (release\stage_v2026.10.18_001): -Release 통과, 없이 실패. Co-Authored-By: Claude Opus 5.5 --- tool/check_apk.ps1 | 9 ++++++++- tool/check_windows_build.ps1 | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/tool/check_apk.ps1 b/tool/check_apk.ps1 index 31c86c1..feb5825 100644 --- a/tool/check_apk.ps1 +++ b/tool/check_apk.ps1 @@ -6,6 +6,8 @@ # - 시험판 번호 (관리자 지시 10/12): 시험판의 versionCode 가 정식 판 (git 태그 v년.월.일_번호) 과 같으면 실패. # 918 이 --build-number 없이 빌드되어 정식 판 v2026.10.10_001 (261010001) 과 똑같이 보였다 - 사용자 기기에 깔리면 정식 판으로 보이고 # 새 버전 확인도 "최신과 같음" 이 된다. 시험판은 flutter build apk --build-number 9xx 로 빌드한다. 정식 판 APK 는 -Release. +# - 순번 900 이상의 v 태그 (시험판 Pre-release, 예: v2026.10.18_977) 는 정식 판으로 보지 않는다 (관리자 지시 10/19, 28 지적: +# 시험판에 태그를 단 뒤 같은 APK 를 다시 검사하면 "정식 판 번호와 같음" 으로 거짓 실패). 정식 판 (-Release) 인데 순번이 900 이상이면 실패. # 사용: powershell -ExecutionPolicy Bypass -File tool\check_apk.ps1 -Apk build\app\outputs\flutter-apk\app-release.apk [-Release] param( [Parameter(Mandatory = $true)][string]$Apk, @@ -68,8 +70,13 @@ if ($badging -notmatch "versionCode='(\d+)' versionName='([^']*)'") { throw "ver $code = [long]$Matches[1]; $vname = $Matches[2] $tags = @(git -C $app tag --list 'v*' 2>$null) $same = @(foreach ($t in $tags) { - if ($t -match '^v(\d+)\.(\d+)\.(\d+)_(\d+)$' -and ([long]$Matches[1] % 100) * 10000000 + [long]$Matches[2] * 100000 + [long]$Matches[3] * 1000 + [long]$Matches[4] -eq $code) { $t } + # 순번 900 이상 = 시험판 태그 (정식 판이 아님) + if ($t -match '^v(\d+)\.(\d+)\.(\d+)_(\d+)$' -and [long]$Matches[4] -lt 900 -and + ([long]$Matches[1] % 100) * 10000000 + [long]$Matches[2] * 100000 + [long]$Matches[3] * 1000 + [long]$Matches[4] -eq $code) { $t } }) +if ($Release -and ($code % 1000) -ge 900) { + $bad += "정식 판 (-Release) 인데 versionCode $code ($vname) 의 순번이 $($code % 1000) - 시험판 번호입니다 (정식 판은 --build-number 없이, pubspec 의 +순번)" +} if (-not $Release -and $same) { $bad += "시험판인데 versionCode $code ($vname) 가 정식 판 $($same -join ', ') 과 같음 - flutter build apk --build-number 9xx 로 다시 빌드 (정식 판이면 -Release)" } diff --git a/tool/check_windows_build.ps1 b/tool/check_windows_build.ps1 index 43d6870..dba3e5b 100644 --- a/tool/check_windows_build.ps1 +++ b/tool/check_windows_build.ps1 @@ -3,6 +3,8 @@ # - 시험판: flutter build windows --build-number <년월일 6자리><순번 3자리> (예: 261012972 → "v2026.10.12_972", APK versionCode 와 같은 번호). # 번호가 1000 보다 작으면 (정식 판 번호, 예: +1) 실패 - 972 Windows 가 +1 로 나가 정식 판 v2026.10.12_001 과 구별되지 않았다. # - 정식 판 (-Release): 번호가 1000 보다 작아야 한다 (시험 번호가 정식 zip 에 들어가지 않게). +# - 정식 판 (-Release) 의 순번이 900 이상이면 실패 (900 이상은 시험판 순번 - check_apk.ps1 과 같은 규칙, 관리자 지시 10/19). +# 이 검사는 git 태그를 보지 않으므로 시험판 태그를 단 뒤 다시 검사해도 거짓 실패가 없다. # 사용: powershell -ExecutionPolicy Bypass -File tool\check_windows_build.ps1 -Dir <배포 폴더 (Lib 가 있는 곳)> [-Release] param( [Parameter(Mandatory = $true)][string]$Dir, @@ -16,7 +18,7 @@ if ($ver -notmatch '^(\d+)\.(\d+)\.(\d+)\+(\d+)$') { throw "판 번호를 읽을 $build = [long]$Matches[4] $shown = '{0}.{1:00}.{2:00}_{3:000}' -f [int]$Matches[1], [int]$Matches[2], [int]$Matches[3], ($build % 1000) if ($Release) { - if ($build -ge 1000) { throw "정식 판인데 시험 번호입니다: $ver (화면 v$shown). --build-number 없이 (pubspec 의 +순번) 빌드하세요" } + if ($build -ge 900) { throw "정식 판인데 시험 번호입니다: $ver (화면 v$shown). --build-number 없이 (pubspec 의 +순번) 빌드하세요" } } elseif ($build -lt 1000) { throw ("시험판인데 정식 판 번호입니다: $ver (화면 v$shown - 정식 판과 같게 보임).`n" + "flutter build windows --release --build-number <년월일><순번 3자리> (예: 261012972) 로 다시 빌드하세요")