ms-vite-plugin 1.5.16 → 1.5.19

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.
package/docs/api/ui.md CHANGED
@@ -119,6 +119,12 @@ ui.call("loadData", {
119
119
  });
120
120
  ```
121
121
 
122
+ ### 悬浮窗网页
123
+
124
+ 越狱包从悬浮图标打开的网页,文件名固定为项目里的 `ui/floatingWindow.html`。没有这个文件时悬浮网页打不开。主界面 `package.json` 的 `ui.tabs` 不决定这个页面。
125
+
126
+ 页面里用 `ms`。脚本用 `ui.callFloatingWindow`、`ui.evalFloatingWindow` 调用这个页面里 `registerUIFunc` 注册的函数。关闭、是否点空白关闭、窗口尺寸也写在这个页面里:`ms.closeWebWindow`、`ms.setWebWindowBlankClose`、`ms.setWebWindowSize`。
127
+
122
128
  ### callFloatingWindow - 调用越狱悬浮窗网页中的 JavaScript 函数
123
129
 
124
130
  ```typescript
@@ -474,6 +480,18 @@ ms.isTaskRunning()
474
480
 
475
481
  ### 配置管理方法
476
482
 
483
+ 网页里的配置方法和脚本 `config` 模块读写的是同一份配置。网页写进去,脚本用下表对应的方法就能读到;脚本写进去,网页再取也是这个值。
484
+
485
+ | 网页 | 脚本 |
486
+ | ---- | ---- |
487
+ | `ms.setConfig(key, value)` | `config.set(key, value)` |
488
+ | `ms.getConfig(key)` | `config.get(key)` |
489
+ | `ms.removeConfig(key)` | `config.remove(key)` |
490
+ | `ms.getAllConfig()` | `config.all()` |
491
+ | `ms.setAllConfig(config)` | `config.setAll(config)` |
492
+
493
+ 网页方法都返回 Promise。脚本方法直接返回结果。没有这个键时,网页 `ms.getConfig` 得到 `null`,脚本 `config.get` 得到 `undefined`。`ms.setAllConfig` 用传入对象替换整份配置,不在对象里的旧键会被清掉。
494
+
477
495
  #### setConfig - 设置配置项
478
496
 
479
497
  ```typescript
@@ -312,7 +312,7 @@ $打印信息日志("应用已切换到前台");
312
312
 
313
313
  - `0` 标准:等待完整执行完成
314
314
  - `1` 快速:更快的执行速度
315
- - `2` 真实点击:更接近真实手指触控
315
+ - `2` 真实点击:带触摸面积
316
316
 
317
317
  ```typescript
318
318
  declare function $设置Agent触控模式(模式: 数字): 数字;
@@ -12,6 +12,8 @@
12
12
 
13
13
  所有传递`图片ID`的函数都可以使用`"actionScreenshot"`作为参数,来表示指定 HID 快捷键系统截图
14
14
 
15
+ 所有传递`图片ID`的函数都可以使用`"vpnScreenshot"`作为参数,来表示指定VPN免自动化截图
16
+
15
17
  所有传递`图片ID`的函数都可以使用图片路径作为参数,来表示对指定图片进行操作,支持 res 目录文件,和手机文件路径。
16
18
 
17
19
  ## 图片获取与管理
@@ -38,8 +40,8 @@ function 截取屏幕(
38
40
 
39
41
  **返回值:**
40
42
 
41
- | 类型 | 描述 |
42
- | -------- | -------------------------------- |
43
+ | 类型 | 描述 |
44
+ | -------- | ------------------------------------- |
43
45
  | `字符串` | 截图的图片 ID,失败时返回 `undefined` |
44
46
 
45
47
  **示例:**
@@ -84,8 +86,8 @@ function 读取图片(图片路径: 字符串): 字符串 | undefined;
84
86
 
85
87
  **返回值:**
86
88
 
87
- | 类型 | 描述 |
88
- | -------- | -------------------------- |
89
+ | 类型 | 描述 |
90
+ | -------- | ------------------------------- |
89
91
  | `字符串` | 图片 ID,失败时返回 `undefined` |
90
92
 
91
93
  **示例:**
@@ -186,7 +188,9 @@ if (图片ID) {
186
188
  ### 获取图片大小 - 获取图片尺寸。
187
189
 
188
190
  ```typescript
189
- function 获取图片大小(图片ID: 字符串): { width: 数字; height: 数字 } | undefined;
191
+ function 获取图片大小(
192
+ 图片ID: 字符串,
193
+ ): { width: 数字; height: 数字 } | undefined;
190
194
  ```
191
195
 
192
196
  **参数:**
@@ -197,8 +201,8 @@ function 获取图片大小(图片ID: 字符串): { width: 数字; height: 数
197
201
 
198
202
  **返回值:**
199
203
 
200
- | 类型 | 描述 |
201
- | --------------------------------------- | -------------------------------------------------------------- |
204
+ | 类型 | 描述 |
205
+ | -------------------------------------------- | ------------------------------------------------------------------- |
202
206
  | `{ width: 数字; height: 数字 } \| undefined` | 图片尺寸对象,包含 `width` 和 `height` 属性,失败时返回 `undefined` |
203
207
 
204
208
  **示例:**
@@ -950,8 +954,8 @@ function 旋转图片(图片ID: 字符串, 角度: 数字): 字符串 | undefine
950
954
 
951
955
  **返回值:**
952
956
 
953
- | 类型 | 描述 |
954
- | ---------------- | ----------------------------------- |
957
+ | 类型 | 描述 |
958
+ | --------------------- | ---------------------------------------- |
955
959
  | `字符串 \| undefined` | 旋转后的新图片 ID 失败时返回 `undefined` |
956
960
 
957
961
  **示例:**
@@ -1091,8 +1095,8 @@ function 扫描条码(图片ID: 字符串): 字符串 | undefined;
1091
1095
 
1092
1096
  **返回值:**
1093
1097
 
1094
- | 类型 | 描述 |
1095
- | ---------------- | --------------------------- |
1098
+ | 类型 | 描述 |
1099
+ | --------------------- | -------------------------------- |
1096
1100
  | `字符串 \| undefined` | 扫码结果,失败时返回 `undefined` |
1097
1101
 
1098
1102
  **示例:**
package/docs/apicn/ui.md CHANGED
@@ -107,6 +107,12 @@ $视图.调用函数("loadData", {
107
107
  });
108
108
  ```
109
109
 
110
+ ### 悬浮窗网页
111
+
112
+ 越狱包从悬浮图标打开的网页,文件名固定为项目里的 `ui/floatingWindow.html`。没有这个文件时悬浮网页打不开。主界面 `package.json` 的 `ui.tabs` 不决定这个页面。
113
+
114
+ 页面里用 `ms`。脚本用 `$视图.调用悬浮窗函数`、`$视图.执行悬浮窗JS代码`(英文是 `ui.callFloatingWindow`、`ui.evalFloatingWindow`)调用这个页面里 `registerUIFunc` 注册的函数。关闭、是否点空白关闭、窗口尺寸也写在这个页面里:`ms.closeWebWindow`、`ms.setWebWindowBlankClose`、`ms.setWebWindowSize`。
115
+
110
116
  ### 调用悬浮窗函数 - 调用越狱悬浮窗网页中的 JavaScript 函数
111
117
 
112
118
  ```typescript
@@ -462,6 +468,18 @@ ms.isTaskRunning()
462
468
 
463
469
  ### 配置管理方法
464
470
 
471
+ 网页里的配置方法和脚本配置模块读写的是同一份配置。网页写进去,脚本用下表对应的方法就能读到;脚本写进去,网页再取也是这个值。
472
+
473
+ | 网页 | 脚本(英文 / 中文) |
474
+ | ---- | ------------------- |
475
+ | `ms.setConfig(key, value)` | `config.set` / `$配置.设置` |
476
+ | `ms.getConfig(key)` | `config.get` / `$配置.获取` |
477
+ | `ms.removeConfig(key)` | `config.remove` / `$配置.删除` |
478
+ | `ms.getAllConfig()` | `config.all` / `$配置.所有配置` |
479
+ | `ms.setAllConfig(config)` | `config.setAll` / `$配置.设置所有` |
480
+
481
+ 网页方法都返回 Promise。脚本方法直接返回结果。没有这个键时,网页 `ms.getConfig` 得到 `null`,脚本 `config.get` / `$配置.获取` 得到 `undefined`。`ms.setAllConfig` 用传入对象替换整份配置,不在对象里的旧键会被清掉。
482
+
465
483
  #### setConfig() - 设置配置项
466
484
 
467
485
  ```typescript
@@ -4,7 +4,6 @@
4
4
 
5
5
  **全局模块无调用前缀,直接使用即可。不要 `require`。**
6
6
 
7
-
8
7
  ## 功能概览
9
8
 
10
9
  - **应用信息**: 获取应用版本、名称、包信息、运行模式、平台
@@ -254,7 +253,7 @@ print("应用已切换到前台")
254
253
 
255
254
  - `0` 标准:等待完整执行完成
256
255
  - `1` 快速:更快的执行速度
257
- - `2` 真实点击:更接近真实手指触控
256
+ - `2` 真实点击:带触摸面积
258
257
 
259
258
  ```lua
260
259
  ---@param mode number
@@ -441,8 +440,8 @@ function SetStopCallback(callback) end
441
440
 
442
441
  **参数:**
443
442
 
444
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
445
- | ---------- | -------------------------- | -------- | ------ | ------------------------------------------ |
443
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
444
+ | ---------- | -------------------------- | -------- | ------ | ------------------------------------------- |
446
445
  | `callback` | `fun(status: string)`\|nil | 否 | nil | 停止回调;`status` 为 success/error/stopped |
447
446
 
448
447
  **示例:**
@@ -470,8 +469,8 @@ function SetExceptionCallback(callback) end
470
469
 
471
470
  **参数:**
472
471
 
473
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
474
- | ---------- | ---------- | -------- | ------ | -------- |
472
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
473
+ | ---------- | ------------ | -------- | ------ | -------- |
475
474
  | `callback` | `fun()`\|nil | 否 | nil | 异常回调 |
476
475
 
477
476
  **示例:**
@@ -549,8 +548,8 @@ function ShouldInterruptThread() end
549
548
 
550
549
  **返回值:**
551
550
 
552
- | 类型 | 描述 |
553
- | --------- | -------- |
551
+ | 类型 | 描述 |
552
+ | --------- | ---------- |
554
553
  | `boolean` | 是否应退出 |
555
554
 
556
555
  **示例:**
@@ -689,4 +688,3 @@ function loge(...) end
689
688
  loge("网络请求失败")
690
689
  loge("文件读取错误")
691
690
  ```
692
-
@@ -14,6 +14,8 @@
14
14
 
15
15
  所有传递`imageId`的函数都可以使用`"actionScreenshot"`作为参数,来表示指定 HID 快捷键系统截图
16
16
 
17
+ 所有传递`imageId`的函数都可以使用`"vpnScreenshot"`作为参数,来表示指定VPN免自动化截图
18
+
17
19
  所有传递`imageId`的函数都可以使用图片路径作为参数,来表示对指定图片进行操作,支持 res 目录文件,和手机文件路径。
18
20
 
19
21
  ## 图片获取与管理
@@ -8,6 +8,8 @@
8
8
 
9
9
  还可读写「允许 App 请求跟踪」「个性化广告」和定位服务总开关。不同 iOS 版本中,这些设置项的名称或位置可能略有不同。
10
10
 
11
+ `jbroot` 把系统根下的路径映射成越狱根下的绝对路径。`rootfs` 把越狱根路径还原成系统根路径。已经是越狱根路径时再调用 `jbroot`,会再映射一次。
12
+
11
13
  ## API 参考
12
14
 
13
15
  ### respring - 重启 SpringBoard(Respring)。
@@ -223,3 +225,78 @@ function setLocationServices(enabled) end
223
225
  ```lua
224
226
  jbsystem.setLocationServices(false)
225
227
  ```
228
+
229
+ ### jbroot - 系统根路径映射为越狱根路径。
230
+
231
+ ```lua
232
+ ---@param path string
233
+ ---@return string
234
+ function jbroot(path) end
235
+ ```
236
+
237
+ **参数:**
238
+
239
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
240
+ | ------ | -------- | -------- | ------ | -------------- |
241
+ | `path` | `string` | 是 | - | 系统根下的路径 |
242
+
243
+ **返回值:**
244
+
245
+ | 类型 | 描述 |
246
+ | -------- | ---------------- |
247
+ | `string` | 对应的越狱根路径 |
248
+
249
+ **示例:**
250
+
251
+ ```lua
252
+ -- 传入系统根下的路径,返回越狱根下的绝对路径。
253
+ -- 隐根:
254
+ -- jbsystem.jbroot("/") -> /var/containers/Bundle/Application/.jbroot-XXXXXXXXXXXXXXXX/
255
+ -- jbsystem.jbroot("/usr/bin") -> /var/containers/Bundle/Application/.jbroot-XXXXXXXXXXXXXXXX/usr/bin
256
+ -- 无根:
257
+ -- jbsystem.jbroot("/") -> /var/jb
258
+ -- jbsystem.jbroot("/usr/bin") -> /var/jb/usr/bin
259
+ local bin = jbsystem.jbroot("/usr/bin")
260
+ logi(bin)
261
+ ```
262
+
263
+ ### rootfs - 越狱根路径还原为系统根路径。
264
+
265
+ 把 `jbroot` 得到的越狱根路径还原成原来的系统根路径。
266
+
267
+ ```lua
268
+ ---@param path string
269
+ ---@return string
270
+ function rootfs(path) end
271
+ ```
272
+
273
+ **参数:**
274
+
275
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
276
+ | ------ | -------- | -------- | ------ | -------------- |
277
+ | `path` | `string` | 是 | - | 越狱根下的路径 |
278
+
279
+ **返回值:**
280
+
281
+ | 类型 | 描述 |
282
+ | -------- | ---------------- |
283
+ | `string` | 对应的系统根路径 |
284
+
285
+ **示例:**
286
+
287
+ ```lua
288
+ -- 传入越狱根路径,返回对应的系统根路径。
289
+ -- 隐根:
290
+ -- jbsystem.rootfs("/var/containers/Bundle/Application/.jbroot-XXXXXXXXXXXXXXXX/")
291
+ -- -> /
292
+ -- jbsystem.rootfs("/var/containers/Bundle/Application/.jbroot-XXXXXXXXXXXXXXXX/usr/bin")
293
+ -- -> /usr/bin
294
+ -- 无根:
295
+ -- jbsystem.rootfs("/var/jb") -> /
296
+ -- jbsystem.rootfs("/var/jb/usr/bin") -> /usr/bin
297
+ -- 隐根上,系统根路径也会被 rootfs 指到 /rootfs:
298
+ -- jbsystem.rootfs("/usr/bin") -> /rootfs/usr/bin
299
+ local sysBin = jbsystem.rootfs(jbsystem.jbroot("/usr/bin"))
300
+ logi(sysBin)
301
+ -- /usr/bin
302
+ ```
@@ -15,20 +15,20 @@
15
15
 
16
16
  ## 功能一览
17
17
 
18
- | 类别 | API |
19
- | --- | --- |
20
- | 读图 / 截屏 | `capture` · `imread` · `imdecode` · `imwrite` · `imencode` · `fromImageId` / `toImageId` |
21
- | Mat | `Mat` / `zeros` / `ones` · `clone` · `empty` / `isRelease` · `release` / `releaseAll` · `getSize` / `at` / `set` · `copyTo` |
22
- | 颜色 / 阈值 | `cvtColor` · `threshold` · `adaptiveThreshold` · `inRange` · `CLAHE` / `equalizeHist` |
23
- | 算术 / 位运算 | `add` / `subtract` / `multiply` / `divide` · bitwise_* · `absdiff` · `addWeighted` · `convertScaleAbs` · `normalize` / `norm` · `meanStdDev` · `findNonZero` · `countNonZero` · `minMaxLoc` / `mean` / `sum` · `split` / `merge` · `hconcat` / `vconcat` · `LUT` · `compare` · `min` / `max` · `extractChannel` |
24
- | 滤波边缘 | `GaussianBlur` / `blur` / `medianBlur` / `bilateralFilter` / `boxFilter` · `Canny` / `Sobel` / `Laplacian` / `Scharr` · `filter2D` · `pyrDown` / `pyrUp` · `fastNlMeansDenoising` / `fastNlMeansDenoisingColored` · `inpaint` |
25
- | 几何 | `resize` / `crop` / `rotate` / `flip` · `copyMakeBorder` · `warpAffine` / `warpPerspective` · `getRotationMatrix2D` · `getAffineTransform` · `getPerspectiveTransform` · `invertAffineTransform` · `findHomography` · `perspectiveTransform` · `estimateAffine2D` / `estimateAffinePartial2D` · `getRectSubPix` · `phaseCorrelate` |
26
- | 绘制 | `rectangle` / `circle` / `line` / `ellipse` / `arrowedLine` / `drawMarker` · `putText` / `fillPoly` / `fillConvexPoly` / `polylines` / `drawContours` · `getTextSize` |
27
- | 匹配 | `matchTemplate` / `matchTemplateLoc` · `SIFT` / `ORB` / `FAST` · `BFMatcher` / `knnMatch` · `FlannBasedMatcher` / `flannKnnMatch` · `drawKeypoints` / `drawMatches` |
28
- | 轮廓 | `findContours` · `boundingRect` / `minAreaRect` / `boxPoints` · `contourArea` / `arcLength` / `approxPolyDP` / `convexHull` / `convexityDefects` / `isContourConvex` · `moments` / `HuMoments` / `matchShapes` · `pointPolygonTest` · `fitEllipse` / `fitLine` / `minEnclosingCircle` |
29
- | 霍夫 / 连通域 | `HoughLinesP` / `HoughCircles` · `connectedComponents` / `connectedComponentsWithStats` · `distanceTransform` · `floodFill` · `goodFeaturesToTrack` / `cornerHarris` / `cornerSubPix` |
30
- | 直方图 | `calcHist` · `compareHist` · `calcBackProject` |
31
- | 扫码 | `encodeQRCode` · `detectQRCode` · `detectBarcode` |
18
+ | 类别 | API |
19
+ | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
20
+ | 读图 / 截屏 | `capture` · `imread` · `imdecode` · `imwrite` · `imencode` · `fromImageId` / `toImageId` |
21
+ | Mat | `Mat` / `zeros` / `ones` · `clone` · `empty` / `isRelease` · `release` / `releaseAll` · `getSize` / `at` / `set` · `copyTo` |
22
+ | 颜色 / 阈值 | `cvtColor` · `threshold` · `adaptiveThreshold` · `inRange` · `CLAHE` / `equalizeHist` |
23
+ | 算术 / 位运算 | `add` / `subtract` / `multiply` / `divide` · bitwise\_\* · `absdiff` · `addWeighted` · `convertScaleAbs` · `normalize` / `norm` · `meanStdDev` · `findNonZero` · `countNonZero` · `minMaxLoc` / `mean` / `sum` · `split` / `merge` · `hconcat` / `vconcat` · `LUT` · `compare` · `min` / `max` · `extractChannel` |
24
+ | 滤波边缘 | `GaussianBlur` / `blur` / `medianBlur` / `bilateralFilter` / `boxFilter` · `Canny` / `Sobel` / `Laplacian` / `Scharr` · `filter2D` · `pyrDown` / `pyrUp` · `fastNlMeansDenoising` / `fastNlMeansDenoisingColored` · `inpaint` |
25
+ | 几何 | `resize` / `crop` / `rotate` / `flip` · `copyMakeBorder` · `warpAffine` / `warpPerspective` · `getRotationMatrix2D` · `getAffineTransform` · `getPerspectiveTransform` · `invertAffineTransform` · `findHomography` · `perspectiveTransform` · `estimateAffine2D` / `estimateAffinePartial2D` · `getRectSubPix` · `phaseCorrelate` |
26
+ | 绘制 | `rectangle` / `circle` / `line` / `ellipse` / `arrowedLine` / `drawMarker` · `putText` / `fillPoly` / `fillConvexPoly` / `polylines` / `drawContours` · `getTextSize` |
27
+ | 匹配 | `matchTemplate` / `matchTemplateLoc` · `SIFT` / `ORB` / `FAST` · `BFMatcher` / `knnMatch` · `FlannBasedMatcher` / `flannKnnMatch` · `drawKeypoints` / `drawMatches` |
28
+ | 轮廓 | `findContours` · `boundingRect` / `minAreaRect` / `boxPoints` · `contourArea` / `arcLength` / `approxPolyDP` / `convexHull` / `convexityDefects` / `isContourConvex` · `moments` / `HuMoments` / `matchShapes` · `pointPolygonTest` · `fitEllipse` / `fitLine` / `minEnclosingCircle` |
29
+ | 霍夫 / 连通域 | `HoughLinesP` / `HoughCircles` · `connectedComponents` / `connectedComponentsWithStats` · `distanceTransform` · `floodFill` · `goodFeaturesToTrack` / `cornerHarris` / `cornerSubPix` |
30
+ | 直方图 | `calcHist` · `compareHist` · `calcBackProject` |
31
+ | 扫码 | `encodeQRCode` · `detectQRCode` · `detectBarcode` |
32
32
 
33
33
  ## 已导出方法
34
34
 
@@ -77,19 +77,19 @@ function capture(x, y, ex, ey) end
77
77
 
78
78
  **参数:**
79
79
 
80
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
81
- | --- | --- | --- | --- | --- |
82
- | `x` | number | 否 | 0 | 区域左上角 X 坐标 |
83
- | `y` | number | 否 | 0 | 区域左上角 Y 坐标 |
84
- | `ex` | number | 否 | 0 | 区域右下角 X 坐标 |
85
- | `ey` | number | 否 | 0 | 区域右下角 Y 坐标 |
80
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
81
+ | ------ | ------ | -------- | ------ | ----------------- |
82
+ | `x` | number | 否 | 0 | 区域左上角 X 坐标 |
83
+ | `y` | number | 否 | 0 | 区域左上角 Y 坐标 |
84
+ | `ex` | number | 否 | 0 | 区域右下角 X 坐标 |
85
+ | `ey` | number | 否 | 0 | 区域右下角 Y 坐标 |
86
86
 
87
87
  无参或全 0 表示全屏。
88
88
 
89
89
  **返回值:**
90
90
 
91
- | 类型 | 描述 |
92
- | --- | --- |
91
+ | 类型 | 描述 |
92
+ | -------- | ------------------------ |
93
93
  | `string` | Mat 句柄,失败返回 `nil` |
94
94
 
95
95
  **示例:**
@@ -111,29 +111,29 @@ function imread(path) end
111
111
 
112
112
  **参数:**
113
113
 
114
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
115
- | --- | --- | --- | --- | --- |
116
- | `path` | string | 是 | - | 见下方支持的输入源 |
114
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
115
+ | ------ | ------ | -------- | ------ | ------------------ |
116
+ | `path` | string | 是 | - | 见下方支持的输入源 |
117
117
 
118
118
  **支持的输入源:**
119
119
 
120
- | 输入 | 说明 |
121
- | --- | --- |
122
- | msbundle/res 相对路径 | 如 `"template.png"`、`"images/logo.jpg"` |
123
- | 手机绝对路径 | 如 documents 下文件 |
124
- | `$MS_IMG$_…` | `image` 模块 imageId |
125
- | `"screen"` | 当前屏幕截图 |
126
- | `"shortcut"` | HID 快捷指令截图 |
127
- | `"actionScreenshot"` | HID 系统截图 |
128
- | `"vpnScreenshot"` | VPN/iDevice 截图 |
129
- | `http://` / `https://` | 网络图片 |
130
- | `media:n` | 相册第 n 张(从 1 起) |
131
- | `data:image/...;base64,...` | data URI |
120
+ | 输入 | 说明 |
121
+ | --------------------------- | ---------------------------------------- |
122
+ | msbundle/res 相对路径 | 如 `"template.png"`、`"images/logo.jpg"` |
123
+ | 手机绝对路径 | 如 documents 下文件 |
124
+ | `$MS_IMG$_…` | `image` 模块 imageId |
125
+ | `"screen"` | 当前屏幕截图 |
126
+ | `"shortcut"` | HID 快捷指令截图 |
127
+ | `"actionScreenshot"` | HID 系统截图 |
128
+ | `"vpnScreenshot"` | VPN免自动化截图 |
129
+ | `http://` / `https://` | 网络图片 |
130
+ | `media:n` | 相册第 n 张(从 1 起) |
131
+ | `data:image/...;base64,...` | data URI |
132
132
 
133
133
  **返回值:**
134
134
 
135
- | 类型 | 描述 |
136
- | --- | --- |
135
+ | 类型 | 描述 |
136
+ | -------- | ------------------------ |
137
137
  | `string` | Mat 句柄,失败返回 `nil` |
138
138
 
139
139
  **示例:**
@@ -160,9 +160,9 @@ function imdecode(data) end
160
160
 
161
161
  **参数:**
162
162
 
163
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
164
- | --- | --- | --- | --- | --- |
165
- | `data` | string | 是 | - | 纯 base64,或 `data:image/...;base64,...` |
163
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
164
+ | ------ | ------ | -------- | ------ | ----------------------------------------- |
165
+ | `data` | string | 是 | - | 纯 base64,或 `data:image/...;base64,...` |
166
166
 
167
167
  **说明:** 不解析文件路径 / msbundle / imageId;路径类请用 `imread`。常与 `imencode` 成对使用。
168
168
 
@@ -189,10 +189,10 @@ function imwrite(path, mat) end
189
189
 
190
190
  **参数:**
191
191
 
192
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
193
- | --- | --- | --- | --- | --- |
194
- | `path` | string | 是 | - | 本地绝对路径(写入磁盘,不是 msbundle) |
195
- | `mat` | Mat | 是 | - | Mat 句柄 |
192
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
193
+ | ------ | ------ | -------- | ------ | --------------------------------------- |
194
+ | `path` | string | 是 | - | 本地绝对路径(写入磁盘,不是 msbundle) |
195
+ | `mat` | Mat | 是 | - | Mat 句柄 |
196
196
 
197
197
  **说明:** 格式由 `path` 的扩展名决定,可用 `png` / `apng` / `jpg` / `jpeg` / `jpe` / `bmp` / `dib` / `webp` / `ppm` / `pgm` / `pbm` / `pnm` / `pam` / `sr` / `ras`;其它扩展名(如 `tiff`)或通道数不是 1 / 3 / 4 的 Mat 会直接返回 `false`。
198
198
 
@@ -218,11 +218,11 @@ function imencode(ext, mat, quality) end
218
218
 
219
219
  **参数:**
220
220
 
221
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
222
- | --- | --- | --- | --- | --- |
223
- | `ext` | string | 是 | - | 如 `.png` / `.jpg` / `png` |
224
- | `mat` | Mat | 是 | - | Mat 句柄 |
225
- | `quality` | number | 否 | 90 | JPEG 质量,取值 1–100(仅 jpg 有效) |
221
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
222
+ | --------- | ------ | -------- | ------ | ------------------------------------ |
223
+ | `ext` | string | 是 | - | 如 `.png` / `.jpg` / `png` |
224
+ | `mat` | Mat | 是 | - | Mat 句柄 |
225
+ | `quality` | number | 否 | 90 | JPEG 质量,取值 1–100(仅 jpg 有效) |
226
226
 
227
227
  **说明:** 可用扩展名与通道限制同 `imwrite`,不支持的格式返回 `nil`。
228
228
 
@@ -244,10 +244,10 @@ function fromImageId(imageId) end
244
244
 
245
245
  **参数:**
246
246
 
247
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
248
- | --- | --- | --- | --- | --- |
249
- | `imageId` | string | 是 | - | `image` 模块句柄 |
250
- | `mat` | Mat | 是 | - | `cv` Mat 句柄 |
247
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
248
+ | --------- | ------ | -------- | ------ | ---------------- |
249
+ | `imageId` | string | 是 | - | `image` 模块句柄 |
250
+ | `mat` | Mat | 是 | - | `cv` Mat 句柄 |
251
251
 
252
252
  **说明:** 均为独立拷贝。`fromImageId(id)` 与 `imread(id)` 对 imageId 效果相同。
253
253
 
@@ -272,11 +272,11 @@ function Mat(options) end
272
272
 
273
273
  **参数:**
274
274
 
275
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
276
- | --- | --- | --- | --- | --- |
277
- | `rows` / `cols` | number | 是 | - | 行 / 列 |
278
- | `type` | number | 否 | `CV_8UC3` | 如 `cv.CV_8UC1` |
279
- | `scalar` | number[] | 否 | - | 仅 `Mat`:填充值 |
275
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
276
+ | --------------- | -------- | -------- | --------- | ---------------- |
277
+ | `rows` / `cols` | number | 是 | - | 行 / 列 |
278
+ | `type` | number | 否 | `CV_8UC3` | 如 `cv.CV_8UC1` |
279
+ | `scalar` | number[] | 否 | - | 仅 `Mat`:填充值 |
280
280
 
281
281
  **示例:**
282
282
 
@@ -342,11 +342,11 @@ function threshold(mat, options) end
342
342
 
343
343
  **参数:**
344
344
 
345
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
346
- | --- | --- | --- | --- | --- |
347
- | `thresh` | number | 否 | 127 | 阈值 |
348
- | `maxval` | number | 否 | 255 | 最大值 |
349
- | `type` | number | 否 | `THRESH_BINARY` | 如 `THRESH_BINARY` / `THRESH_OTSU` |
345
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
346
+ | -------- | ------ | -------- | --------------- | ---------------------------------- |
347
+ | `thresh` | number | 否 | 127 | 阈值 |
348
+ | `maxval` | number | 否 | 255 | 最大值 |
349
+ | `type` | number | 否 | `THRESH_BINARY` | 如 `THRESH_BINARY` / `THRESH_OTSU` |
350
350
 
351
351
  **示例:**
352
352
 
@@ -366,13 +366,13 @@ function adaptiveThreshold(mat, options) end
366
366
 
367
367
  **参数:**
368
368
 
369
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
370
- | --- | --- | --- | --- | --- |
371
- | `maxValue` | number | 否 | 255 | 最大值 |
372
- | `adaptiveMethod` | number | 否 | `ADAPTIVE_THRESH_GAUSSIAN_C` | 或 `ADAPTIVE_THRESH_MEAN_C` |
373
- | `thresholdType` | number | 否 | `THRESH_BINARY` | |
374
- | `blockSize` | number | 否 | 11 | 奇数邻域 |
375
- | `C` | number | 否 | 2 | 常数偏移 |
369
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
370
+ | ---------------- | ------ | -------- | ---------------------------- | --------------------------- |
371
+ | `maxValue` | number | 否 | 255 | 最大值 |
372
+ | `adaptiveMethod` | number | 否 | `ADAPTIVE_THRESH_GAUSSIAN_C` | 或 `ADAPTIVE_THRESH_MEAN_C` |
373
+ | `thresholdType` | number | 否 | `THRESH_BINARY` | |
374
+ | `blockSize` | number | 否 | 11 | 奇数邻域 |
375
+ | `C` | number | 否 | 2 | 常数偏移 |
376
376
 
377
377
  **示例:**
378
378
 
@@ -456,12 +456,12 @@ function Canny(mat, options) end
456
456
 
457
457
  **Canny 参数:**
458
458
 
459
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
460
- | --- | --- | --- | --- | --- |
461
- | `threshold1` | number | 否 | 100 | 低阈值 |
462
- | `threshold2` | number | 否 | 200 | 高阈值 |
463
- | `apertureSize` | number | 否 | 3 | Sobel 孔径 |
464
- | `L2gradient` | boolean | 否 | false | 是否用 L2 范数 |
459
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
460
+ | -------------- | ------- | -------- | ------ | -------------- |
461
+ | `threshold1` | number | 否 | 100 | 低阈值 |
462
+ | `threshold2` | number | 否 | 200 | 高阈值 |
463
+ | `apertureSize` | number | 否 | 3 | Sobel 孔径 |
464
+ | `L2gradient` | boolean | 否 | false | 是否用 L2 范数 |
465
465
 
466
466
  **示例:**
467
467
 
@@ -607,11 +607,11 @@ function matchTemplate(image, templ, methodOrOptions) end
607
607
 
608
608
  **参数:**
609
609
 
610
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
611
- | --- | --- | --- | --- | --- |
612
- | `image` | Mat | 是 | - | 大图 |
613
- | `templ` | Mat | 是 | - | 模板(须小于大图) |
614
- | `method` | number | 否 | `TM_CCOEFF_NORMED` | 匹配方法 |
610
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
611
+ | -------- | ------ | -------- | ------------------ | ------------------ |
612
+ | `image` | Mat | 是 | - | 大图 |
613
+ | `templ` | Mat | 是 | - | 模板(须小于大图) |
614
+ | `method` | number | 否 | `TM_CCOEFF_NORMED` | 匹配方法 |
615
615
 
616
616
  **matchTemplateLoc 返回:** `{ x, y, minVal, maxVal }`(最佳位置取自 max 或 min,取决于 method)。
617
617
 
@@ -638,10 +638,10 @@ function findContours(mat, options) end
638
638
 
639
639
  **参数:**
640
640
 
641
- | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
642
- | --- | --- | --- | --- | --- |
643
- | `mode` | number | 否 | `RETR_EXTERNAL` | 如 `RETR_LIST` / `RETR_TREE` |
644
- | `method` | number | 否 | `CHAIN_APPROX_SIMPLE` | 如 `CHAIN_APPROX_NONE` |
641
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
642
+ | -------- | ------ | -------- | --------------------- | ---------------------------- |
643
+ | `mode` | number | 否 | `RETR_EXTERNAL` | 如 `RETR_LIST` / `RETR_TREE` |
644
+ | `method` | number | 否 | `CHAIN_APPROX_SIMPLE` | 如 `CHAIN_APPROX_NONE` |
645
645
 
646
646
  **返回值:** `contours` 为点集;`hierarchy` 为每个轮廓的 `[next, prev, child, parent]`(`-1` 表示无)。
647
647
 
@@ -864,4 +864,3 @@ cv.fillConvexPoly(src, { pts = { { x = 20, y = 20 }, { x = 70, y = 20 }, { x = 4
864
864
  - 标记:`MARKER_CROSS` 等
865
865
  - 直方图:`HISTCMP_CORREL` 等
866
866
  - 线型:`LINE_AA`、`FILLED`
867
-
package/docs/apilua/ui.md CHANGED
@@ -175,6 +175,12 @@ ui.call("loadData", {
175
175
  })
176
176
  ```
177
177
 
178
+ ### 悬浮窗网页
179
+
180
+ 越狱包从悬浮图标打开的网页,文件名固定为项目里的 `ui/floatingWindow.html`。没有这个文件时悬浮网页打不开。主界面 `package.json` 的 `ui.tabs` 不决定这个页面。
181
+
182
+ 页面里用 `ms`。脚本用 `ui.callFloatingWindow`、`ui.evalFloatingWindow` 调用这个页面里 `registerUIFunc` 注册的函数。关闭、是否点空白关闭、窗口尺寸也写在这个页面里:`ms.closeWebWindow`、`ms.setWebWindowBlankClose`、`ms.setWebWindowSize`。
183
+
178
184
  ### callFloatingWindow - 调用越狱悬浮窗网页中的 JavaScript 函数
179
185
 
180
186
  ```lua
@@ -515,6 +521,18 @@ ms.isTaskRunning()
515
521
 
516
522
  ### 配置管理方法
517
523
 
524
+ 网页里的配置方法和脚本 `config` 模块读写的是同一份配置。网页写进去,脚本用下表对应的方法就能读到;脚本写进去,网页再取也是这个值。
525
+
526
+ | 网页 | 脚本 |
527
+ | ---- | ---- |
528
+ | `ms.setConfig(key, value)` | `config.set(key, value)` |
529
+ | `ms.getConfig(key)` | `config.get(key)` |
530
+ | `ms.removeConfig(key)` | `config.remove(key)` |
531
+ | `ms.getAllConfig()` | `config.all()` |
532
+ | `ms.setAllConfig(config)` | `config.setAll(config)` |
533
+
534
+ 网页方法都返回 Promise。脚本方法直接返回结果。没有这个键时,网页 `ms.getConfig` 得到 `null`,脚本 `config.get` 得到 `nil`。`ms.setAllConfig` 用传入对象替换整份配置,不在对象里的旧键会被清掉。
535
+
518
536
  #### setConfig - 设置配置项
519
537
 
520
538
  ```typescript
@@ -61,7 +61,7 @@ g.takeMeToFront()
61
61
 
62
62
  - `0` 标准:等待完整执行完成
63
63
  - `1` 快速:更快的执行速度
64
- - `2` 真实点击:更接近真实手指触控
64
+ - `2` 真实点击:带触摸面积
65
65
 
66
66
  ```python
67
67
  def setAgentTouchMode(mode: int) -> int
@@ -12,6 +12,8 @@
12
12
 
13
13
  所有传递`imageId`的函数都可以使用`"actionScreenshot"`作为参数,来表示指定 HID 快捷键系统截图
14
14
 
15
+ 所有传递`imageId`的函数都可以使用`"vpnScreenshot"`作为参数,来表示指定VPN免自动化截图
16
+
15
17
  所有传递`imageId`的函数都可以使用图片路径作为参数,来表示对指定图片进行操作,支持 res 目录文件,和手机文件路径。
16
18
 
17
19
  ## 图片获取与管理