diff --git a/entry/src/main/ets/common/logtext.ets b/entry/src/main/ets/common/logtext.ets index 6a712eb..966c777 100644 --- a/entry/src/main/ets/common/logtext.ets +++ b/entry/src/main/ets/common/logtext.ets @@ -233,22 +233,47 @@ export class LogManager { return 1; } - // 分割版本号,只保留数字部分 - const partsA = versionA.split(/[. ]/).map(part => { - const num = parseInt(part); - return isNaN(num) ? 0 : num; - }); - const partsB = versionB.split(/[. ]/).map(part => { - const num = parseInt(part); - return isNaN(num) ? 0 : num; - }); + // 分离主版本号和beta版本号 + let mainVersionA = versionA; + let betaVersionA = ''; + let mainVersionB = versionB; + let betaVersionB = ''; - // 比较每个部分 - for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) { - const numA = partsA[i] || 0; - const numB = partsB[i] || 0; + if (isBetaA) { + const parts = versionA.split('beta'); + mainVersionA = parts[0].trim(); + betaVersionA = parts[1].trim(); + } + + if (isBetaB) { + const parts = versionB.split('beta'); + mainVersionB = parts[0].trim(); + betaVersionB = parts[1].trim(); + } + + // 比较主版本号 + const mainPartsA = mainVersionA.split('.').map(part => parseInt(part) || 0); + const mainPartsB = mainVersionB.split('.').map(part => parseInt(part) || 0); + + for (let i = 0; i < Math.max(mainPartsA.length, mainPartsB.length); i++) { + const numA = mainPartsA[i] || 0; + const numB = mainPartsB[i] || 0; if (numA !== numB) { - return numB - numA; + return numB - numA; // 降序排列,最新版本在前 + } + } + + // 如果主版本号相同且都有beta版本,比较beta版本号 + if (betaVersionA && betaVersionB) { + const betaPartsA = betaVersionA.split('.').map(part => parseInt(part) || 0); + const betaPartsB = betaVersionB.split('.').map(part => parseInt(part) || 0); + + for (let i = 0; i < Math.max(betaPartsA.length, betaPartsB.length); i++) { + const numA = betaPartsA[i] || 0; + const numB = betaPartsB[i] || 0; + if (numA !== numB) { + return numB - numA; // 降序排列,beta2.0 > beta1.2 + } } }