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

108 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

这是一个为您编写的专门用于介绍 `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` 方法)
启动过程被设计为异步非阻塞模式:
1. **环境检查:** 区分快速启动模式 (`quickStart`) 和调试模式 (`isDebug`)。
2. **原生库加载:** 在静态块中加载核心原生库:`FridaNative`, `ThrowSafely`, `DogAgent`, `RegisterTray`
3. **插件加载线程:** 开启独立线程加载插件,避免阻塞 UI 渲染,同时通过 `ProgressBarManager` 反馈进度。
4. **事件广播:** 插件加载完成后,通过事件总线发送 `StartupEvent``OpenFileEvents`
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. 调试功能
`isDebug``true` 时,程序会:
1. 启动一个独立的 `DebugWindow`,实时显示应用内部状态。
2. 允许通过 `generateFileDump()` 等内部方法手动生成性能分析数据。
## 6. 原生库依赖
该类在静态初始化块中加载了以下原生库,表明应用具备底层系统交互能力:
* **FridaNative:** 可能用于动态插桩或 Hook。
* **ThrowSafely:** 安全异常处理。
* **DogAgent:** 代理或监控组件。
* **RegisterTray:** 系统托盘的原生实现。
## 7. 代码示例:获取主实例与工具注册
```java
// 获取主程序实例
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*