45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
using System;
|
|
using UnityEditor;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Build.Reporting;
|
|
using UnityEngine;
|
|
|
|
public class VersionIncrementer : IPreprocessBuildWithReport
|
|
{
|
|
public int callbackOrder => 0;
|
|
|
|
public void OnPreprocessBuild(BuildReport report)
|
|
{
|
|
// 去除时间戳
|
|
string[] bundleVersionParts = PlayerSettings.bundleVersion.Split('-');
|
|
string version = bundleVersionParts[0];
|
|
|
|
// 获取当前版本号
|
|
string[] versionParts = version.Split('.');
|
|
int major = int.Parse(versionParts[0]);
|
|
int minor = int.Parse(versionParts[1]);
|
|
int revision = int.Parse(versionParts[2]);
|
|
int build = int.Parse(versionParts[3]);
|
|
|
|
// 更新版本号
|
|
string incrementedVersion = $"{major}.{minor}.{revision}.{build + 1}";
|
|
bool isDevelopmentBuild = (report.summary.options & BuildOptions.Development) != 0;
|
|
|
|
if (isDevelopmentBuild)
|
|
{
|
|
string timestamp = DateTime.Now.ToString("yyyyMMdd-HHmmss");
|
|
incrementedVersion = $"{incrementedVersion}-{timestamp}-DEV";
|
|
}
|
|
|
|
PlayerSettings.bundleVersion = incrementedVersion;
|
|
Debug.Log($"[VersionIncrementer] bundleVersion: {incrementedVersion}");
|
|
|
|
if (report.summary.platform == BuildTarget.Android)
|
|
{
|
|
int versionCode = PlayerSettings.Android.bundleVersionCode;
|
|
PlayerSettings.Android.bundleVersionCode = versionCode + 1;
|
|
Debug.Log($"[VersionIncrementer] Android versionCode: {versionCode} -> {versionCode + 1}");
|
|
}
|
|
}
|
|
}
|