Files
tzdwindows 7 7badbb0d8e docs: 添加 Axis Innovators Box 框架完整 API 文档
- 新增浏览器模块技术文档,涵盖 BrowserCore、BrowserWindow 等核心组件
- 添加事件系统文档,包括 EventBus、GlobalEventBus 及各类事件定义
- 创建 LanguageManager 国际化管理器详细说明文档
- 新增 Log4j2OutputStream 标准输出重定向类文档
- 添加 Main 入口类启动流程与路由机制说明
- 创建 BrowserCreationCallback 回调接口使用指南
- 完善 AxisInnovatorsBox 主类架构与崩溃诊断系统文档
2026-01-03 08:46:19 +08:00

5.6 KiB
Raw Permalink Blame History

这是一个为您编写的专门用于介绍 package com.axis.innovators.boxAxisInnovatorsBox 类的 Markdown 文档。

该文档详细涵盖了类的架构、核心功能、生命周期管理、崩溃处理机制以及主题系统。


AxisInnovatorsBox 类技术文档

包路径: com.axis.innovators.box.AxisInnovatorsBox
版本: 0.2.2
作者: tzdwindows 7, lyxyz5223, 🐾Mr. Liu🐾, 泽钰

1. 概述

AxisInnovatorsBoxAxis 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 方法)

启动过程被设计为异步非阻塞模式:

  1. 环境检查: 区分快速启动模式 (quickStart) 和调试模式 (isDebug)。
  2. 原生库加载: 在静态块中加载核心原生库:FridaNative, ThrowSafely, DogAgent, RegisterTray
  3. 插件加载线程: 开启独立线程加载插件,避免阻塞 UI 渲染,同时通过 ProgressBarManager 反馈进度。
  4. 事件广播: 插件加载完成后,通过事件总线发送 StartupEventOpenFileEvents
  5. UI 呈现: 最终调用 runWindow() 初始化并显示主界面。

3.2 强大的崩溃诊断系统 (organizingCrashReports)

这是该类最复杂的功能之一。当发生未捕获异常时,它会:

  1. 拦截异常(包括 EDT 线程异常)。
  2. 收集全面的调试信息:
    • 日志: Log4j2 的所有 Appender 日志。
    • JVM 信息: 类加载器层级、内存使用详情 (Heap/Non-Heap)、线程堆栈 (Thread Dump)、GC 状态。
    • 系统环境: 环境变量、系统属性。
    • 内存转储: 调用 HotSpotDiagnosticMXBean 生成 .hprof 文件。
  3. UI 反馈: 弹出一个自定义的崩溃对话框,展示错误堆栈和插件信息。
  4. 导出: 允许用户将所有诊断信息打包导出为 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. 调试功能

isDebugtrue 时,程序会:

  1. 启动一个独立的 DebugWindow,实时显示应用内部状态。
  2. 允许通过 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