You've already forked Commercialization.topon
release: 1.4.14
This commit is contained in:
120
Topon_Adapter/Editor/ToponBuildWindowExtension.cs
Normal file
120
Topon_Adapter/Editor/ToponBuildWindowExtension.cs
Normal file
@@ -0,0 +1,120 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Topon_Adapter.Editor
|
||||
{
|
||||
[InitializeOnLoad]
|
||||
internal static class ToponBuildWindowExtensionBootstrap
|
||||
{
|
||||
static ToponBuildWindowExtensionBootstrap()
|
||||
{
|
||||
BuildWindowExtensionRegistry.Register(new ToponBuildWindowExtension());
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ToponBuildWindowExtension : IBuildWindowExtension
|
||||
{
|
||||
public string Id => "com.commercialization.topon.build.settings";
|
||||
public string DisplayName => "TopOn 配置";
|
||||
public int Order => 80;
|
||||
|
||||
public void DrawSection(BuildWindowExtensionContext context)
|
||||
{
|
||||
var profile = context?.profile;
|
||||
if (profile == null)
|
||||
{
|
||||
EditorGUILayout.HelpBox("当前没有构建配置。", MessageType.Info);
|
||||
return;
|
||||
}
|
||||
|
||||
var settings = ToponBuildSettingsStore.LoadForProfileName(profile.profileName, context.repositoryRoot);
|
||||
|
||||
EditorGUILayout.LabelField("TopOn Android 调试工具", EditorStyles.boldLabel);
|
||||
EditorGUILayout.HelpBox(
|
||||
"正式 release 默认关闭 DebugUI。关闭后构建后处理会剔除 debugger-ui 及其诊断库,避免 anr_data.db 降级崩溃。",
|
||||
MessageType.Info);
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
settings.enableDebuggerUI = EditorGUILayout.Toggle(
|
||||
new GUIContent("启用 DebugUI 依赖", "仅用于开发/测试包;正式 release 应保持关闭。"),
|
||||
settings.enableDebuggerUI);
|
||||
|
||||
using (new EditorGUI.DisabledScope(!settings.enableDebuggerUI))
|
||||
{
|
||||
settings.forceVerbtoUtilVersion = EditorGUILayout.Toggle(
|
||||
new GUIContent("强制 util 1.1.3", "启用 DebugUI 时同时声明 com.verbto.tools:util:1.1.3,避免回落到 1.0.6。"),
|
||||
settings.forceVerbtoUtilVersion);
|
||||
}
|
||||
|
||||
settings.stripResolvedDebuggerArtifacts = EditorGUILayout.Toggle(
|
||||
new GUIContent("禁用时剔除旧产物", "关闭 DebugUI 时,从生成的 Gradle 工程中删除旧 Resolver 带入的 debugger-ui/util AAR。"),
|
||||
settings.stripResolvedDebuggerArtifacts);
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
ToponBuildSettingsStore.SaveForProfileName(profile.profileName, context.repositoryRoot, settings);
|
||||
}
|
||||
|
||||
EditorGUILayout.Space(6);
|
||||
if (settings.enableDebuggerUI)
|
||||
{
|
||||
EditorGUILayout.HelpBox("当前配置会把 TopOn DebugUI 打进 Android 构建;请不要用于正式 release。", MessageType.Warning);
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.HelpBox("当前配置不会打包 TopOn DebugUI。", MessageType.None);
|
||||
}
|
||||
|
||||
DrawResolverStatus(context);
|
||||
}
|
||||
|
||||
public BuildWindowExtensionReport Preflight(BuildWindowExtensionContext context)
|
||||
{
|
||||
var profile = context?.profile;
|
||||
if (profile == null)
|
||||
{
|
||||
return BuildWindowExtensionReport.Pass();
|
||||
}
|
||||
|
||||
var settings = ToponBuildSettingsStore.LoadForProfileName(profile.profileName, context.repositoryRoot);
|
||||
ToponBuildSettingsStore.SetActiveForCurrentBuild(settings);
|
||||
|
||||
var report = BuildWindowExtensionReport.Pass();
|
||||
if (settings.enableDebuggerUI)
|
||||
{
|
||||
report.AddMessage("TopOn DebugUI 已启用。");
|
||||
if (!profile.isDevelopment)
|
||||
{
|
||||
report.AddWarning("当前不是 Development Build,请确认该配置不是正式 release。");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
report.AddMessage("TopOn DebugUI 已关闭,构建产物会剔除 debugger-ui/util 诊断库。");
|
||||
}
|
||||
|
||||
if (!settings.enableDebuggerUI && ToponBuildSettingsStore.HasStaleDebuggerResolverOutput(context.repositoryRoot))
|
||||
{
|
||||
report.AddWarning("检测到旧 Resolver 输出仍包含 TopOn DebugUI;本次构建会在生成 Gradle 后剔除,建议后续重新 Resolve。");
|
||||
}
|
||||
|
||||
return report;
|
||||
}
|
||||
|
||||
public BuildWindowExtensionReport PostBuild(BuildWindowExtensionContext context)
|
||||
{
|
||||
return BuildWindowExtensionReport.Pass();
|
||||
}
|
||||
|
||||
private static void DrawResolverStatus(BuildWindowExtensionContext context)
|
||||
{
|
||||
var hasStaleOutput = ToponBuildSettingsStore.HasStaleDebuggerResolverOutput(context.repositoryRoot);
|
||||
var artifacts = ToponBuildSettingsStore.FindResolvedDebuggerArtifacts(context.repositoryRoot);
|
||||
|
||||
EditorGUILayout.Space(6);
|
||||
EditorGUILayout.LabelField("本地依赖状态", EditorStyles.boldLabel);
|
||||
EditorGUILayout.LabelField("旧 Resolver 输出", hasStaleOutput ? "检测到 debugger-ui/util" : "未检测到");
|
||||
EditorGUILayout.LabelField("已解析 AAR/JAR", artifacts.Count == 0 ? "未检测到" : $"{artifacts.Count} 个");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user