【m】build apk 开发

This commit is contained in:
2025-07-02 16:28:08 +08:00
parent ec8b2f7e25
commit 986c610ef2
58 changed files with 1480 additions and 2914 deletions

View File

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor;
using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEngine;
[Serializable]
public class BuildApkEntity
{
public BuildApkEntity(Action OnBuildApkAction, Action OnBuildApkUpdateAction)
{
this._onBuildApkAction = OnBuildApkAction;
this._onBuildApkUpdateAction = OnBuildApkUpdateAction;
}
private Action _onBuildApkAction;
private Action _onBuildApkUpdateAction;
[Button("打包", ButtonSizes.Large)]
private void BuildApk()
{
this._onBuildApkAction?.Invoke();
}
[Button("上传服务器", ButtonSizes.Large)]
private void BuildApkUpdate()
{
this._onBuildApkUpdateAction?.Invoke();
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9d2f8d70d3b1414a934ca1b195d13b9c
timeCreated: 1751429102

View File

@@ -0,0 +1,126 @@
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor;
using Stary.Evo;
using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEngine;
using BuildReport = UnityEditor.Build.Reporting.BuildReport;
public class BuildApkWindow : OdinEditorWindow
{
public static OdinEditorWindow window;
[MenuItem("Evo/Apk打包工具")]
static void ShowWindows()
{
window = (BuildApkWindow)EditorWindow.GetWindow(typeof(BuildApkWindow));
window.maxSize = new Vector2(400, 500);
window.Show();
}
protected override void Initialize()
{
base.Initialize();
buildApkLocalEntity = new BuildApkEntity(BuildAndroid, BuildAndroid);
buildApkServerEntity = new BuildApkEntity(BuildAndroid, BuildAndroid);
buildApkWatermarkEntity = new BuildApkEntity(BuildAndroid, BuildAndroid);
}
[EnumToggleButtons, HideLabel] public DeviceType deviceType;
[BoxGroup("Build(清空打包缓存)", centerLabel: true, order: 1)]
[Button("清空打包缓存")]
void OnClearCache()
{
// 清理Library缓存目录
// 使用System.IO删除
// try {
// System.IO.Directory.Delete(Application.dataPath + "/../Library/AssetImportState", true);
// Debug.Log("成功删除AssetImportState");
// } catch (System.Exception e) {
// Debug.LogError($"删除失败: {e.Message}");
// }
// 使用System.IO删除
try
{
System.IO.Directory.Delete(Application.dataPath + "/../Library/BuildCache", true);
Debug.Log("成功删除BuildCache");
}
catch (System.Exception e)
{
Debug.LogError($"删除失败: {e.Message}");
}
// 使用System.IO删除
try
{
System.IO.Directory.Delete(Application.dataPath + "/../Library/ScriptAssemblies", true);
Debug.Log("成功删除ScriptAssemblies");
}
catch (System.Exception e)
{
Debug.LogError($"删除失败: {e.Message}");
}
AssetDatabase.Refresh();
EditorUtility.DisplayDialog("缓存清理", "已成功清除所有打包缓存文件", "确定");
}
[BoxGroup("Build(普通包\\服务器本地包)", centerLabel: true, order: 2), HideLabel]
public BuildApkEntity buildApkLocalEntity;
[BoxGroup("Build(服务器热更包)", centerLabel: true, order: 3), HideLabel]
public BuildApkEntity buildApkServerEntity;
[BoxGroup("Build(水印包)", centerLabel: true, order: 4), HideLabel]
public BuildApkEntity buildApkWatermarkEntity;
public void BuildAndroid()
{
HotfixMainResDomain hotfixMainResDomain = Resources.Load<HotfixMainResDomain>("HotfixMainResDomain");
if (hotfixMainResDomain == null)
{
Debug.LogError("HotfixMainResDomain 资源在Resources下不存在请检查");
}
// 设置包名和项目名
PlayerSettings.productName = hotfixMainResDomain.projectInfo.projectName;
PlayerSettings.applicationIdentifier = hotfixMainResDomain.projectInfo.projectPackageName;
// 配置构建选项
BuildPlayerOptions buildOptions = new BuildPlayerOptions
{
scenes = new[]
{
$"Assets/SplashScreen/EvoScenes/loading.unity",
$"Assets/Main/main_{deviceType.ToString()}.unity"
},
locationPathName = $"Builds/Android/{PlayerSettings.applicationIdentifier}.apk",
target = BuildTarget.Android,
options = BuildOptions.None
};
// 执行打包
BuildReport report = BuildPipeline.BuildPlayer(buildOptions);
BuildSummary summary = report.summary;
if (summary.result == BuildResult.Succeeded)
{
Debug.Log("Build succeeded: " + summary.totalSize + " bytes");
}
if (summary.result == BuildResult.Failed)
{
Debug.LogError("Build failed");
}
}
public enum DeviceType
{
Xreal,
Rokid
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 81361a51e315e2345b51e3004941d04a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: