【m】build apk 开发
This commit is contained in:
126
Assets/00.StaryEvo/Editor/Build/BuildApkWindow.cs
Normal file
126
Assets/00.StaryEvo/Editor/Build/BuildApkWindow.cs
Normal 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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user