ms-vite-plugin 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/build.js +6 -0
  2. package/dist/cli.js +98 -8
  3. package/dist/mcp/device-config.d.ts +55 -0
  4. package/dist/mcp/device-config.js +183 -0
  5. package/dist/mcp/docs-service.d.ts +65 -0
  6. package/dist/mcp/docs-service.js +168 -0
  7. package/dist/mcp/project.d.ts +16 -0
  8. package/dist/mcp/project.js +74 -0
  9. package/dist/mcp/tools.d.ts +18 -0
  10. package/dist/mcp/tools.js +825 -0
  11. package/dist/mcp/types.d.ts +32 -0
  12. package/dist/mcp/types.js +11 -0
  13. package/dist/mcp-server.d.ts +2 -0
  14. package/dist/mcp-server.js +86 -0
  15. package/dist/project.d.ts +89 -0
  16. package/dist/project.js +306 -0
  17. package/dist/version.d.ts +12 -0
  18. package/dist/version.js +63 -0
  19. package/docs/api/action.md +922 -0
  20. package/docs/api/appleocr.md +229 -0
  21. package/docs/api/config.md +122 -0
  22. package/docs/api/cryptoUtils.md +232 -0
  23. package/docs/api/device.md +374 -0
  24. package/docs/api/file.md +516 -0
  25. package/docs/api/global.md +617 -0
  26. package/docs/api/hid.md +1032 -0
  27. package/docs/api/hotUpdate.md +166 -0
  28. package/docs/api/http.md +548 -0
  29. package/docs/api/image.md +907 -0
  30. package/docs/api/ime.md +290 -0
  31. package/docs/api/logger.md +324 -0
  32. package/docs/api/media.md +248 -0
  33. package/docs/api/mysql.md +441 -0
  34. package/docs/api/netCard.md +200 -0
  35. package/docs/api/node.md +353 -0
  36. package/docs/api/paddleocr.md +246 -0
  37. package/docs/api/pip.md +242 -0
  38. package/docs/api/system.md +572 -0
  39. package/docs/api/thread.md +269 -0
  40. package/docs/api/tomatoocr.md +425 -0
  41. package/docs/api/tts.md +334 -0
  42. package/docs/api/ui.md +947 -0
  43. package/docs/api/utils.md +265 -0
  44. package/docs/api/yolo.md +310 -0
  45. package/docs/apicn/action.md +919 -0
  46. package/docs/apicn/appleocr.md +233 -0
  47. package/docs/apicn/config.md +120 -0
  48. package/docs/apicn/device.md +385 -0
  49. package/docs/apicn/file.md +511 -0
  50. package/docs/apicn/global.md +613 -0
  51. package/docs/apicn/hid.md +1033 -0
  52. package/docs/apicn/hotUpdate.md +170 -0
  53. package/docs/apicn/http.md +672 -0
  54. package/docs/apicn/image.md +924 -0
  55. package/docs/apicn/ime.md +290 -0
  56. package/docs/apicn/logger.md +332 -0
  57. package/docs/apicn/media.md +252 -0
  58. package/docs/apicn/mysql.md +445 -0
  59. package/docs/apicn/netCard.md +200 -0
  60. package/docs/apicn/node.md +362 -0
  61. package/docs/apicn/paddleocr.md +255 -0
  62. package/docs/apicn/pip.md +242 -0
  63. package/docs/apicn/system.md +575 -0
  64. package/docs/apicn/thread.md +269 -0
  65. package/docs/apicn/tts.md +338 -0
  66. package/docs/apicn/ui.md +933 -0
  67. package/docs/apicn/utils.md +265 -0
  68. package/docs/apicn/yolo.md +314 -0
  69. package/docs/apipython/action.md +901 -0
  70. package/docs/apipython/appleocr.md +226 -0
  71. package/docs/apipython/config.md +126 -0
  72. package/docs/apipython/cryptoUtils.md +246 -0
  73. package/docs/apipython/device.md +365 -0
  74. package/docs/apipython/file.md +476 -0
  75. package/docs/apipython/g.md +154 -0
  76. package/docs/apipython/hid.md +1059 -0
  77. package/docs/apipython/hotUpdate.md +154 -0
  78. package/docs/apipython/image.md +938 -0
  79. package/docs/apipython/ime.md +306 -0
  80. package/docs/apipython/logger.md +330 -0
  81. package/docs/apipython/media.md +221 -0
  82. package/docs/apipython/mysql.md +432 -0
  83. package/docs/apipython/netCard.md +219 -0
  84. package/docs/apipython/node.md +331 -0
  85. package/docs/apipython/overview.md +66 -0
  86. package/docs/apipython/paddleocr.md +211 -0
  87. package/docs/apipython/pip.md +231 -0
  88. package/docs/apipython/system.md +458 -0
  89. package/docs/apipython/tomatoocr.md +444 -0
  90. package/docs/apipython/tts.md +331 -0
  91. package/docs/apipython/ui.md +949 -0
  92. package/docs/apipython/utils.md +284 -0
  93. package/docs/apipython/yolo.md +281 -0
  94. package/package.json +8 -4
@@ -0,0 +1,255 @@
1
+ # PaddleOCR 模块 ($PaddleOCR)
2
+
3
+ PaddleOCR 模块基于百度飞桨 PaddleOCR 技术,提供强大的光学字符识别(OCR)功能,支持中英文文本识别,可用于屏幕截图、图片文件等多种输入源的文字识别。
4
+
5
+ ## 功能概览
6
+
7
+ - **模型管理**: PP-OCRv5 模型加载和资源管理
8
+ - **多源识别**: 支持屏幕截图、图片文件、URL 等多种输入源
9
+ - **区域识别**: 支持指定区域的精确文字识别
10
+ - **结构化结果**: 提供详细的文本位置、置信度和方向信息
11
+ - **资源控制**: 完整的模型生命周期管理
12
+
13
+ ## 数据类型
14
+
15
+ ### OCR 识别结果
16
+
17
+ 识别结果的数据结构,包含完整的文本信息和位置数据:
18
+
19
+ ```typescript
20
+ interface OCR识别结果 {
21
+ /** 识别的文本内容 */
22
+ text: 字符串;
23
+ /** 识别置信度 (0-1) */
24
+ confidence: 数字;
25
+ /** 文本区域左上角 x 坐标 */
26
+ x: 数字;
27
+ /** 文本区域左上角 y 坐标 */
28
+ y: 数字;
29
+ /** 文本区域右下角 x 坐标 */
30
+ ex: 数字;
31
+ /** 文本区域右下角 y 坐标 */
32
+ ey: 数字;
33
+ /** 文本区域宽度 */
34
+ width: 数字;
35
+ /** 文本区域高度 */
36
+ height: 数字;
37
+ /** 文本区域中心点 x 坐标 */
38
+ centerX: 数字;
39
+ /** 文本区域中心点 y 坐标 */
40
+ centerY: 数字;
41
+ /** 文本区域角度 */
42
+ angle: 数字;
43
+ /** 文本区域方向 0 横向 1 竖向 */
44
+ orientation: 数字;
45
+ }
46
+ ```
47
+
48
+ **数据结构说明:**
49
+
50
+ | 字段 | 类型 | 描述 |
51
+ | ------------------ | ------ | ----------------------------------------------------- |
52
+ | `text` | 字符串 | 识别出的文本内容 |
53
+ | `confidence` | 数字 | 识别置信度,范围 0-1,值越高表示识别越准确 |
54
+ | `x, y, ex, ey` | 数字 | 文本区域的坐标,分别为左上角和右下角的 x、y 坐标 |
55
+ | `width, height` | 数字 | 文本区域的宽度和高度 |
56
+ | `centerX, centerY` | 数字 | 文本区域的中心点坐标 |
57
+ | `angle` | 数字 | 文本区域的角度,范围 -90 到 90 度,正值表示逆时针旋转 |
58
+ | `orientation` | 数字 | 文本区域的方向,0 表示横向,1 表示竖向 |
59
+
60
+ ## API 参考
61
+
62
+ ### 模型管理
63
+
64
+ #### 加载 V5 模型 - 初始化 PP-OCRv5 模型,这是使用 OCR 功能的前提。
65
+
66
+ ```typescript
67
+ function 加载V5模型(最大边长?: 数字): 布尔值;
68
+ ```
69
+
70
+ **参数:**
71
+
72
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
73
+ | ---------- | ---- | -------- | ------ | -------------------------------- |
74
+ | `最大边长` | 数字 | 否 | 640 | 输入图像的最大边长,默认值为 640 |
75
+
76
+ **返回值:**
77
+
78
+ | 类型 | 描述 |
79
+ | ------ | ---------------- |
80
+ | 布尔值 | 是否成功加载模型 |
81
+
82
+ **示例:**
83
+
84
+ ```javascript
85
+ // 使用默认参数加载模型
86
+ const 是否加载成功 = $PaddleOCR.加载V5模型();
87
+ if (是否加载成功) {
88
+ $打印信息日志("PP-OCRv5 模型加载成功");
89
+ }
90
+ ```
91
+
92
+ ### 文字识别
93
+
94
+ #### 识别 - 执行 OCR 文字识别,支持多种输入源和指定识别区域。
95
+
96
+ ```typescript
97
+ function 识别(
98
+ 输入源: 字符串,
99
+ 图片边界框左上角x坐标?: 数字,
100
+ 图片边界框左上角y坐标?: 数字,
101
+ 图片边界框右下角x坐标?: 数字,
102
+ 图片边界框右下角y坐标?: 数字,
103
+ 置信度阈值?: 数字,
104
+ ): 数组<OCR识别结果>;
105
+ ```
106
+
107
+ **参数:**
108
+
109
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
110
+ | ----------------------- | ------ | -------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
111
+ | `输入源` | string | 是 | | 输入源,支持以下类型:<br>- `"screen"` - 当前屏幕截图<br>- `string` - 图片文件路径或 URL<br>- `imageId` - 图片 ID(通过 image 模块获取) |
112
+ | `图片边界框左上角x坐标` | number | 否 | 0 | 识别区域左上角 x 坐标 |
113
+ | `图片边界框左上角y坐标` | number | 否 | 0 | 识别区域左上角 y 坐标 |
114
+ | `图片边界框右下角x坐标` | number | 否 | 0 | 识别区域右下角 x 坐标 |
115
+ | `图片边界框右下角y坐标` | number | 否 | 0 | 识别区域右下角 y 坐标 |
116
+ | `置信度阈值` | number | 否 | 0.6 | 置信度阈值,默认值为 0.6 |
117
+
118
+ **返回值:**
119
+
120
+ | 类型 | 描述 |
121
+ | ------------------- | ------------------------------------------------------------------------------------ |
122
+ | `数组<OCR识别结果>` | 识别结果数组,每个元素为 OCR 识别结果 对象,包含文本内容、位置信息和置信度等详细数据 |
123
+
124
+ **示例:**
125
+
126
+ ```javascript
127
+ // 首先加载模型
128
+ const 是否加载成功 = $PaddleOCR.加载V5模型();
129
+ if (!是否加载成功) {
130
+ $打印错误日志("模型加载失败");
131
+ return;
132
+ }
133
+
134
+ // 识别整个屏幕
135
+ const fullScreenResults = $PaddleOCR.识别("screen", 0, 0, 0, 0);
136
+ $打印信息日志(`识别到 ${fullScreenResults.length} 个文本区域`);
137
+ fullScreenResults.forEach((result, index) => {
138
+ $打印信息日志(`文本 ${index + 1}: ${JSON.stringify(result)}`);
139
+ });
140
+
141
+ // 识别屏幕指定区域
142
+ const regionResults = $PaddleOCR.识别("screen", 100, 100, 500, 300);
143
+ $打印信息日志(`指定区域识别结果: ${JSON.stringify(regionResults)}`);
144
+
145
+ // 识别图片文件
146
+ const imageResults = $PaddleOCR.识别("/path/to/image.png", 0, 0, 800, 600);
147
+ if (imageResults.length > 0) {
148
+ $打印信息日志("图片文字识别成功");
149
+ imageResults.forEach((result) => {
150
+ $打印信息日志(`识别文字: ${JSON.stringify(result)}`);
151
+ });
152
+ } else {
153
+ $打印信息日志("图片中未识别到文字");
154
+ }
155
+
156
+ // 识别网络图片
157
+ const urlResults = $PaddleOCR.识别(
158
+ "https://example.com/image.jpg",
159
+ 0,
160
+ 0,
161
+ 1000,
162
+ 800,
163
+ );
164
+ $打印信息日志(`网络图片识别结果: ${JSON.stringify(urlResults)}`);
165
+ ```
166
+
167
+ #### 查找文本 - 在识别结果中查找目标文本并返回对应子串坐标。
168
+
169
+ ```typescript
170
+ function 查找文本(
171
+ 输入源: 字符串,
172
+ 目标文本数组: 数组<字符串>,
173
+ 图片边界框左上角x坐标?: 数字,
174
+ 图片边界框左上角y坐标?: 数字,
175
+ 图片边界框右下角x坐标?: 数字,
176
+ 图片边界框右下角y坐标?: 数字,
177
+ 置信度阈值?: 数字,
178
+ ): 数组<OCR识别结果>;
179
+ ```
180
+
181
+ **参数:**
182
+
183
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
184
+ | ----------------------- | -------- | -------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
185
+ | `输入源` | string | 是 | | 输入源,支持以下类型:<br>- `"screen"` - 当前屏幕截图<br>- `string` - 图片文件路径或 URL<br>- `imageId` - 图片 ID(通过 image 模块获取) |
186
+ | `目标文本数组` | string[] | 是 | | 需要查找的目标文本数组,例如 `["你好", "确定"]` |
187
+ | `图片边界框左上角x坐标` | number | 否 | 0 | 查找区域左上角 x 坐标 |
188
+ | `图片边界框左上角y坐标` | number | 否 | 0 | 查找区域左上角 y 坐标 |
189
+ | `图片边界框右下角x坐标` | number | 否 | 0 | 查找区域右下角 x 坐标 |
190
+ | `图片边界框右下角y坐标` | number | 否 | 0 | 查找区域右下角 y 坐标 |
191
+ | `置信度阈值` | number | 否 | 0.6 | 置信度阈值,默认值为 0.6 |
192
+
193
+ **返回值:**
194
+
195
+ | 类型 | 描述 |
196
+ | ------------------- | ----------------------------------------------------------------------------------------------------------- |
197
+ | `数组<OCR识别结果>` | 匹配结果数组。每个元素为命中的文本片段坐标信息,`text` 字段为命中的目标文本,其他字段包含位置和置信度等信息 |
198
+
199
+ **示例:**
200
+
201
+ ```javascript
202
+ // 首先加载模型
203
+ const 是否加载成功 = $PaddleOCR.加载V5模型();
204
+ if (!是否加载成功) {
205
+ $打印错误日志("模型加载失败");
206
+ return;
207
+ }
208
+
209
+ // 在整个屏幕中查找目标文本
210
+ const 命中结果 = $PaddleOCR.查找文本(
211
+ "screen",
212
+ ["登录", "确定"],
213
+ 0,
214
+ 0,
215
+ 0,
216
+ 0,
217
+ 0.6,
218
+ );
219
+ if (命中结果.length > 0) {
220
+ 命中结果.forEach((item, index) => {
221
+ $打印信息日志(
222
+ `命中 ${index + 1}: ${item.text}, 中心点: (${item.centerX}, ${item.centerY})`,
223
+ );
224
+ });
225
+ } else {
226
+ $打印信息日志("未命中目标文本");
227
+ }
228
+
229
+ // 在指定区域查找目标文本
230
+ const 区域命中结果 = $PaddleOCR.查找文本(
231
+ "screen",
232
+ ["下一步"],
233
+ 100,
234
+ 100,
235
+ 500,
236
+ 400,
237
+ );
238
+ $打印信息日志(`区域命中数量: ${区域命中结果.length}`);
239
+ ```
240
+
241
+ ### 资源管理
242
+
243
+ #### 释放资源 - 释放 OCR 模型占用的内存资源。
244
+
245
+ ```typescript
246
+ function 释放资源(): 无返回值;
247
+ ```
248
+
249
+ **示例:**
250
+
251
+ ```javascript
252
+ // 使用完毕后释放资源
253
+ $PaddleOCR.释放资源();
254
+ $打印信息日志("OCR 模型资源已释放");
255
+ ```
@@ -0,0 +1,242 @@
1
+ # 悬浮窗模块 ($悬浮窗)
2
+
3
+ 悬浮窗模块提供了画中画(Picture in Picture)功能,允许在应用中显示悬浮的日志窗口,支持自定义样式和控制脚本启停。
4
+
5
+ ## 功能特性
6
+
7
+ - 🖼️ **悬浮窗显示** - 支持在屏幕上显示悬浮的日志窗口
8
+ - 🎨 **自定义样式** - 可配置窗口大小、字体、颜色等
9
+ - 🎮 **脚本控制** - 支持通过悬浮窗控制脚本的启停
10
+
11
+ ## 接口定义
12
+
13
+ ### 日志窗口参数
14
+
15
+ ```typescript
16
+ interface 日志窗口参数 {
17
+ /**
18
+ * 悬浮窗宽度,不能小于 100
19
+ */
20
+ width: 数字;
21
+ /**
22
+ * 悬浮窗高度,不能小于 100
23
+ */
24
+ height: 数字;
25
+ /**
26
+ * 日志的字体大小
27
+ */
28
+ textSize: 数字;
29
+ /**
30
+ * 日志的文字颜色,格式如 #FFFFFF
31
+ */
32
+ textColor: 字符串;
33
+ /**
34
+ * 日志的背景颜色,格式如 #000000
35
+ */
36
+ backgroundColor: 字符串;
37
+ }
38
+ ```
39
+
40
+ **参数说明:**
41
+
42
+ | 参数 | 类型 | 是否必填 | 默认值 | 描述 |
43
+ | ----------------- | ------ | -------- | ------ | --------------------------------------- |
44
+ | `width` | 数字 | 是 | | 悬浮窗宽度(像素),最小值为 100 |
45
+ | `height` | 数字 | 是 | | 悬浮窗高度(像素),最小值为 100 |
46
+ | `textSize` | 数字 | 是 | | 日志文字大小(像素) |
47
+ | `textColor` | 字符串 | 是 | | 文字颜色,十六进制格式(如:`#FFFFFF`) |
48
+ | `backgroundColor` | 字符串 | 是 | | 背景颜色,十六进制格式(如:`#000000`) |
49
+
50
+ ## API 方法
51
+
52
+ ### 设置日志视图参数
53
+
54
+ ```typescript
55
+ function 设置日志视图参数(参数: 日志窗口参数): 无返回值;
56
+ ```
57
+
58
+ 设置悬浮窗日志窗口的显示参数,必须在显示日志窗口之前调用才会生效。
59
+
60
+ **参数:**
61
+
62
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
63
+ | ------ | ------------ | -------- | ------ | ---------------------- |
64
+ | `参数` | 日志窗口参数 | 是 | | 包含显示参数的配置对象 |
65
+
66
+ **示例:**
67
+
68
+ ```typescript
69
+ // 配置悬浮窗参数
70
+ $悬浮窗.设置日志视图参数({
71
+ width: 300,
72
+ height: 400,
73
+ textSize: 14,
74
+ textColor: "#FFFFFF",
75
+ backgroundColor: "#000000",
76
+ });
77
+ ```
78
+
79
+ ### 是否显示 - 判断悬浮窗是否打开
80
+
81
+ ```typescript
82
+ function 是否显示(): 布尔值;
83
+ ```
84
+
85
+ 判断悬浮窗是否当前打开。
86
+
87
+ **返回值:**
88
+
89
+ | 类型 | 描述 |
90
+ | -------- | --------------------------------------------- |
91
+ | `布尔值` | `true` 代表开启了悬浮窗,`false` 代表没有开启 |
92
+
93
+ **示例:**
94
+
95
+ ```typescript
96
+ // 检查悬浮窗是否打开
97
+ const 是否显示 = $悬浮窗.是否显示();
98
+ if (是否显示) {
99
+ $打印信息日志("悬浮窗当前已打开");
100
+ } else {
101
+ $打印信息日志("悬浮窗当前未打开");
102
+ }
103
+ ```
104
+
105
+ ### 显示日志窗口
106
+
107
+ ```typescript
108
+ function 显示日志窗口(): 布尔值;
109
+ ```
110
+
111
+ 显示悬浮窗日志窗口。应用必须在前台才可调用
112
+
113
+ **返回值:**
114
+
115
+ | 类型 | 描述 |
116
+ | -------- | --------------------------------- |
117
+ | `布尔值` | `true` 代表成功,`false` 代表失败 |
118
+
119
+ **示例:**
120
+
121
+ ```typescript
122
+ // 将应用切入前台
123
+ $APP切入前台();
124
+ // 显示悬浮窗
125
+ const 是否成功 = $悬浮窗.显示日志窗口();
126
+ if (是否成功) {
127
+ $打印信息日志("悬浮窗显示成功");
128
+ } else {
129
+ $打印信息日志("悬浮窗显示失败,请检查权限设置");
130
+ }
131
+ ```
132
+
133
+ ### 关闭日志窗口
134
+
135
+ ```typescript
136
+ function 关闭日志窗口(): 布尔值;
137
+ ```
138
+
139
+ 关闭悬浮窗日志窗口。应用必须在前台才可调用。
140
+
141
+ **返回值:**
142
+
143
+ | 类型 | 描述 |
144
+ | -------- | --------------------------------- |
145
+ | `布尔值` | `true` 代表成功,`false` 代表失败 |
146
+
147
+ **示例:**
148
+
149
+ ```typescript
150
+ // 将应用切入前台
151
+ $APP切入前台();
152
+ // 关闭悬浮窗
153
+ const 是否成功 = $悬浮窗.关闭日志窗口();
154
+ if (是否成功) {
155
+ $打印信息日志("悬浮窗关闭成功");
156
+ } else {
157
+ $打印信息日志("悬浮窗关闭失败");
158
+ }
159
+ ```
160
+
161
+ ### 设置是否允许控制脚本启停
162
+
163
+ ```typescript
164
+ function 设置是否允许控制脚本启停(是否允许: 布尔值): 布尔值;
165
+ ```
166
+
167
+ 设置是否允许悬浮窗控制脚本的启停。
168
+
169
+ **参数:**
170
+
171
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
172
+ | ---------- | ------ | -------- | ------ | ------------------------------------------- |
173
+ | `是否允许` | 布尔值 | 是 | | `true` 代表允许控制,`false` 代表不允许控制 |
174
+
175
+ **示例:**
176
+
177
+ **返回值:**
178
+
179
+ | 类型 | 描述 |
180
+ | -------- | --------------------------------- |
181
+ | `布尔值` | `true` 代表成功,`false` 代表失败 |
182
+
183
+ **示例:**
184
+
185
+ ```typescript
186
+ // 允许悬浮窗控制脚本
187
+ const 是否成功1 = $悬浮窗.设置是否允许控制脚本启停(true);
188
+ // 禁止悬浮窗控制脚本
189
+ const 是否成功2 = $悬浮窗.设置是否允许控制脚本启停(false);
190
+ ```
191
+
192
+ ## 完整使用示例
193
+
194
+ ```typescript
195
+ // 将应用切入前台
196
+ $APP切入前台();
197
+ // 1. 配置悬浮窗参数
198
+ $悬浮窗.设置日志视图参数({
199
+ width: 350,
200
+ height: 500,
201
+ textSize: 16,
202
+ textColor: "#00FF00", // 绿色文字
203
+ backgroundColor: "#1A1A1A", // 深灰色背景
204
+ });
205
+
206
+ // 2. 允许悬浮窗控制脚本
207
+ $悬浮窗.设置是否允许控制脚本启停(true);
208
+
209
+ // 3. 显示悬浮窗
210
+ const showResult = $悬浮窗.显示日志窗口();
211
+ ```
212
+
213
+ ## 注意事项
214
+
215
+ 1. **前台限制**:所有悬浮窗操作都必须在应用前台状态下进行
216
+ 2. **设备兼容性**:仅支持 iOS 15+ 且具备画中画功能的设备
217
+ 3. **参数限制**:悬浮窗的宽度和高度都不能小于 100 像素
218
+ 4. **配置时机**:`设置日志视图参数()` 必须在 `显示日志窗口()` 之前调用
219
+ 5. **颜色格式**:颜色值必须使用十六进制格式(如:`#FFFFFF`)
220
+ 6. **尺寸适配**:iOS 系统会对画中画窗口的尺寸进行限制和自动调整,实际显示的画中画窗口大小可能与设置的 `width` 和 `height` 参数不完全一致
221
+ 7. **内容渲染**:画中画内容渲染会自动适配系统分配的实际窗口尺寸,而不是使用配置的尺寸参数
222
+ 8. **脚本控制**:如果已调用 `设置是否允许脚本控制(true)`,则可以通过悬浮窗控制脚本的启停
223
+
224
+ ## 故障排除
225
+
226
+ ### 悬浮窗无法显示
227
+
228
+ - 确认设备支持悬浮窗功能
229
+ - 检查悬浮窗权限是否已开启
230
+ - 确认参数配置是否正确(宽高不小于 100)
231
+
232
+ ### 悬浮窗显示异常
233
+
234
+ - 检查颜色值格式是否正确
235
+ - 确认字体大小设置是否合理
236
+ - 验证窗口尺寸是否在有效范围内
237
+
238
+ ### 脚本控制无效
239
+
240
+ - 确认已调用 `设置是否允许脚本控制(true)`
241
+ - 检查悬浮窗是否正常显示
242
+ - 验证脚本运行状态是否正常