- 新增浏览器模块技术文档,涵盖 BrowserCore、BrowserWindow 等核心组件 - 添加事件系统文档,包括 EventBus、GlobalEventBus 及各类事件定义 - 创建 LanguageManager 国际化管理器详细说明文档 - 新增 Log4j2OutputStream 标准输出重定向类文档 - 添加 Main 入口类启动流程与路由机制说明 - 创建 BrowserCreationCallback 回调接口使用指南 - 完善 AxisInnovatorsBox 主类架构与崩溃诊断系统文档
5.6 KiB
5.6 KiB
这是一个为您编写的专门用于介绍 package com.axis.innovators.box 中 AxisInnovatorsBox 类的 Markdown 文档。
该文档详细涵盖了类的架构、核心功能、生命周期管理、崩溃处理机制以及主题系统。
AxisInnovatorsBox 类技术文档
包路径: com.axis.innovators.box.AxisInnovatorsBox
版本: 0.2.2
作者: tzdwindows 7, lyxyz5223, 🐾Mr. Liu🐾, 泽钰
1. 概述
AxisInnovatorsBox 是 Axis Innovators Box 应用程序的核心入口类和应用控制器。它主要负责应用程序的生命周期管理、全局配置初始化、插件加载、GUI 窗口调度、崩溃诊断报告生成以及用户身份验证。
该类采用了 单例模式 (Singleton Pattern),确保在整个应用运行期间只有一个主控制器实例存在,并通过 GlobalEventBus 进行事件驱动的模块间通信。
2. 核心架构与职责
该类承载了以下关键职责:
- 启动引导 (Bootstrapping): 解析命令行参数,初始化 Log4j2 日志系统,加载原生库 (JNI)。
- 资源加载: 并行加载 Java 插件 (
PluginLoader) 和 Python 插件 (PluginPyLoader),并管理加载进度条 (ProgressBarManager)。 - GUI 管理: 初始化主窗口 (
MainWindow),管理子窗口 (WindowsJDialog),并处理系统托盘 (Tray)。 - 主题与外观: 集成 FlatLaf 和 Material 主题,支持明/暗模式自动切换及系统主题监听。
- 异常熔断与诊断: 捕获未处理的异常,生成包含堆栈、内存快照 (Heap Dump)、线程快照等的详细崩溃报告。
- 安全与验证: 处理 Casdoor 用户登录,管理加密的 Token (
AESCryptoUtil,Base64CryptoUtil)。
3. 关键特性详解
3.1 启动流程 (run 方法)
启动过程被设计为异步非阻塞模式:
- 环境检查: 区分快速启动模式 (
quickStart) 和调试模式 (isDebug)。 - 原生库加载: 在静态块中加载核心原生库:
FridaNative,ThrowSafely,DogAgent,RegisterTray。 - 插件加载线程: 开启独立线程加载插件,避免阻塞 UI 渲染,同时通过
ProgressBarManager反馈进度。 - 事件广播: 插件加载完成后,通过事件总线发送
StartupEvent和OpenFileEvents。 - UI 呈现: 最终调用
runWindow()初始化并显示主界面。
3.2 强大的崩溃诊断系统 (organizingCrashReports)
这是该类最复杂的功能之一。当发生未捕获异常时,它会:
- 拦截异常(包括 EDT 线程异常)。
- 收集全面的调试信息:
- 日志: Log4j2 的所有 Appender 日志。
- JVM 信息: 类加载器层级、内存使用详情 (Heap/Non-Heap)、线程堆栈 (Thread Dump)、GC 状态。
- 系统环境: 环境变量、系统属性。
- 内存转储: 调用
HotSpotDiagnosticMXBean生成.hprof文件。
- UI 反馈: 弹出一个自定义的崩溃对话框,展示错误堆栈和插件信息。
- 导出: 允许用户将所有诊断信息打包导出为 ZIP 文件。
3.3 主题管理系统 (setTopic & updateTheme)
支持高度可定制的外观,并能响应系统级的主题变更:
- 集成主题库: FlatLaf (Light, Dark, IntelliJ, Darcula, Mac), Material (Oceanic, Lite, Mars), 以及 Java 标准主题 (Metal, Motif)。
- 动态切换: 通过
WindowsTheme监听系统主题变化,并实时广播TopicsUpdateEvents事件来刷新所有已打开的窗口。
3.4 身份验证 (popupLogin)
- 集成了 Casdoor 认证服务器。
- 使用
StateManager本地存储加密后的登录 Token。 - 支持自动登录:如果本地存在有效 Token,自动解密并校验;否则弹出登录窗口。
4. 主要方法说明
| 方法签名 | 描述 |
|---|---|
static void run(String[] args, boolean isDebug, boolean quickStart) |
程序的静态入口点。初始化全局异常处理并启动主实例。 |
void quit() |
安全退出程序,中断主线程并关闭 JVM。 |
void runWindow() |
初始化主窗口 UI,加载注册的工具组件,并显示窗口。 |
void organizingCrashReports(Exception e) |
核心崩溃处理逻辑。收集数据并显示错误报告 GUI。 |
void reloadAllWindow() |
重新加载所有活动窗口(主窗口及子弹窗),用于主题切换或语言更新时刷新 UI。 |
void updateTheme(String themeName, boolean isDarkMode) |
设置 Swing 的 LookAndFeel 并触发全局主题更新事件。 |
static AxisInnovatorsBox getMain() |
获取当前运行的应用主实例(单例)。 |
5. 调试功能
当 isDebug 为 true 时,程序会:
- 启动一个独立的
DebugWindow,实时显示应用内部状态。 - 允许通过
generateFileDump()等内部方法手动生成性能分析数据。
6. 原生库依赖
该类在静态初始化块中加载了以下原生库,表明应用具备底层系统交互能力:
- FridaNative: 可能用于动态插桩或 Hook。
- ThrowSafely: 安全异常处理。
- DogAgent: 代理或监控组件。
- RegisterTray: 系统托盘的原生实现。
7. 代码示例:获取主实例与工具注册
// 获取主程序实例
AxisInnovatorsBox app = AxisInnovatorsBox.getMain();
// 获取注册工具管理器
RegistrationTool tool = app.getRegistrationTool();
// 检查是否处于调试环境
if (app.isDebugEnvironment()) {
System.out.println("Current task progress: " + app.progressBarManager);
}
// 强制重新加载 UI (例如在插件更改后)
SwingUtilities.invokeLater(() -> {
app.reloadAllWindow();
});
文档生成时间: 2026-01-02