更新记录
1.0.0(2026-10-27)
- 新增 QR Model 2 二维码矩阵编码,支持 Unicode、UTF-8 ECI、版本选择及 L/M/Q/H 纠错等级。
- 新增二维码图片生成、矩阵获取、平台能力查询、诊断信息查询和临时文件释放 API,支持回调与 Promise 调用。
- 新增方块、圆角和圆点码点,以及方形、圆角码眼;支持配色、透明背景、尺寸和安全静区设置。
- 新增中心 Logo,支持手机选图、HTTPS 图片地址和图标比例、内边距设置,使用 Logo 时自动采用 H 纠错等级。
- 新增移动端二维码编辑示例,提供顶部预览、下拉参数配置、样式预设和 uni-app Vue2/Vue3、uni-app x 示例。
- 新增完整诊断报告和一键复制全部日志,提供备用分段复制及复制失败后的手动复制入口。
- 新增 Web Chrome 支持,适用于 uni-app Vue2/Vue3 和 uni-app x;Android、iOS 和微信小程序候选实现的验收范围详见 README。
平台兼容性
uni-app(5.33)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | - | - | - | - | - | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | × | × | × | × | × | × | × | × | × | - | - |
uni-app x(5.33)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | - | - | - | × | - |
lizhao-qrcode 二维码生成 UTS 插件
介绍
lizhao-qrcode 是面向 uni-app(Vue2/Vue3)与 uni-app x 的二维码生成 UTS 插件源码,用于把原始文本生成为 QR Model 2 矩阵或 PNG,提供码点/码眼样式、透明背景、中心 Logo、真实临时文件和本地诊断能力。
本次发布支持范围为Web Chrome;Safari、Android、iOS和微信小程序仍为待完成验收的候选实现,Harmony及其他小程序不支持。源码交付不代表已在插件市场上架。当前验收范围与未验边界见“注意事项”;当前插件版本只维护在 uni_modules/lizhao-qrcode/package.json,发布历史维护在 uni_modules/lizhao-qrcode/changelog.md。
功能特色
| 能力 | 对应接口或选项 | 用途与边界 |
|---|---|---|
| 原文编码 | createQRCodeMatrixSync、text |
保留前导零、空格、换行与 Unicode;不 trim、不转数值、不自动 URL 编码。非 ASCII 文本使用 UTF-8 和 ECI 26。 |
| PNG 生成 | createQRCode、createQRCodeAsync |
回调或 Promise 二选一;生成真实可显示资源,失败不会返回空路径成功。 |
| 整数像素与静区 | size、marginModules |
按物理像素绘制整数模块,保留静区;尺寸不足明确失败。 |
| 透明背景与 Logo | background、logo |
Logo 自动使用 H 纠错并恢复被覆盖的功能模块;透明底仍需业务保证显示底色和对比度。 |
| 码点与码眼样式 | moduleShape、finderShape |
方块/圆角/圆点码点与方形/圆角码眼,保留关键功能图形及静区;以实际能力列表和扫码验收为准。 |
| 按能力选择输出 | getQRCodeCapabilities、output |
区分 Data URL 与文件输出,Web 不提供文件输出。运行时能力不替代平台验收。 |
| 精确资源释放 | removeQRCodeFileSync |
只删除本插件登记的实际输出文件,不递归删除、不删除用户输入的 Logo 或其他文件。 |
| 本地诊断 | getQRCodeDiagnostics |
提供请求编号、阶段、错误、耗时与构建身份;完整示例默认一次复制全部日志,并提供固定快照的备用分段。 |
适合哪些场景
| 业务场景 | 推荐用法 | 使用边界 |
|---|---|---|
| 订单、链接、票据、设备绑定码 | 基础 PNG 生成,保留原始字符串 | 插件不校验业务链接是否有效,不提供扫码识别。 |
| 品牌分享卡与打印素材 | Logo、明确像素尺寸和 H 纠错 | Logo 遮挡比例有限;导出后按实际展示或打印尺寸扫描验收。 |
| 自绘码或导出前容量检查 | 同步矩阵与功能模块掩码 | 矩阵不含静区;自绘必须保留功能模块、静区和整数像素。 |
| 临时展示、平台分享或后续保存 | 先检测文件能力,再选择 file 或 both |
文件为临时输出,使用结束精确释放;保存相册是业务另行调用的平台 API。 |
| 客户复现故障 | 完整示例底部“一键复制全部日志” | 报告包含保留的会话日志和插件快照,不包含二维码原文、图片或完整来源地址。 |
下载与导入
当前提供开发候选源码,没有本插件的已核实市场详情链接。把完整的 uni_modules/lizhao-qrcode/ 复制到目标项目,保留接口、各平台实现、原生文件、许可证和示例资源;不要只复制某个平台文件或依赖另一项目的共享目录。
项目要求和引擎范围以 uni_modules/lizhao-qrcode/package.json 为准。普通 uni-app 完整示例使用 JavaScript 选项式 API,兼容 Vue2/Vue3;uni-app x 示例使用 UTS。Vue2/Vue3 已分别执行真实框架状态/生命周期回归及 Web 编译,nvue 未专门验收。uni-app x 接入应保留项目实际 Vapor/VDOM 渲染配置,并按对应模式核对验收范围,不能用相同 .uvue 扩展名推定两种模式已通过。插件业务 API 与公开类型只从 @/uni_modules/lizhao-qrcode 导入。
完整工具示例随插件交付:
- uni-app:
uni_modules/lizhao-qrcode/example/uniapp/index.vue。 - uni-app x:
uni_modules/lizhao-qrcode/example/uniappx/index.uvue。 - 示例接入、复制报告和验收步骤:
uni_modules/lizhao-qrcode/example/readme.md。 - 随示例交付的合成 Logo:
uni_modules/lizhao-qrcode/example/assets/logo.jpg。
在目标项目的 pages.json 中合并适合本宿主的页面记录;已有同路径记录时不要重复添加。以下两项各选一项注册,导航标题可按业务修改:
{
"pages": [
{
"path": "uni_modules/lizhao-qrcode/example/uniappx/index",
"style": { "navigationBarTitleText": "二维码生成" }
}
]
}
普通 uni-app 将 path 改为下面的页面路由,对应实际文件 uni_modules/lizhao-qrcode/example/uniapp/index.vue:
"path": "uni_modules/lizhao-qrcode/example/uniapp/index"
示例页面、报告 helper 与构建身份配套使用,页面不需要创建 hiddenCanvas 或传入 Canvas 实例。
App 首次导入或原生 UTS、Kotlin、Swift、权限、配置变化后,需要原生联编或重打匹配源码的自定义基座;标准基座和旧基座不能自动获得本插件的原生实现,WGT 也不能更新旧基座内的原生代码。仅修改本说明、示例页面、报告或普通资源通常不需要重打原生基座。Web、微信小程序不依赖 App 自定义基座,仍须通过对应宿主编译与运行验证。
本候选 A5 实际运行修复已修改公共 UTS 和原生构建身份,因此本阶段 App 接入必须重新原生联编或重打匹配新源码的自定义基座。A3 历史独立 APK 不匹配本阶段源码,不能作为本轮 App 验收或直接复用依据。
从基础到进阶:按业务模块使用
模块一:从文本生成可预览的 PNG
先用默认的 dataUrl 输出验证实际平台绘图能力。以下是可放入已注册页面的最小页面写法;随插件交付的完整工具页路径分别为 uni_modules/lizhao-qrcode/example/uniapp/index.vue 与 uni_modules/lizhao-qrcode/example/uniappx/index.uvue,还包含回调调用、释放和诊断。
普通 uni-app Vue3 页面使用 JavaScript,不在普通 <script setup> 中填写 UTS 类型:
<template>
<view>
<button :disabled="busy" @click="generate">生成二维码</button>
<image v-if="imageSrc.length > 0" :src="imageSrc" mode="aspectFit" />
<text>{{ status }}</text>
</view>
</template>
<script setup>
import { ref } from 'vue'
import { onUnload } from '@dcloudio/uni-app'
import { createQRCodeAsync, getQRCodeCapabilities } from '@/uni_modules/lizhao-qrcode'
const busy = ref(false)
const imageSrc = ref('')
const status = ref('就绪')
let disposed = false
function generate() {
if (busy.value) return
const capabilities = getQRCodeCapabilities()
if (!capabilities.canRender || !capabilities.supportsDataUrl) {
status.value = '当前环境不支持 PNG Data URL,请检查平台能力和基座'
return
}
busy.value = true
createQRCodeAsync({ text: '0000123 中文二维码 👩🏽💻', size: 512, output: 'dataUrl' })
.then(result => {
if (disposed) return
imageSrc.value = result.imageSrc
status.value = '成功:' + result.width + '×' + result.height + ' px'
busy.value = false
})
.catch(error => {
if (disposed) return
status.value = error.errSubject + ' / ' + error.errCode + ':' + error.errMsg
busy.value = false
})
}
onUnload(() => { disposed = true })
</script>
uni-app x 使用 <script setup lang="uts"> 和根入口的公开类型:
<template>
<view>
<button :disabled="busy" @click="generate">生成二维码</button>
<image v-if="imageSrc.length > 0" :src="imageSrc" mode="aspectFit" />
<text>{{ status }}</text>
</view>
</template>
<script setup lang="uts">
import { ref } from 'vue'
import { onUnload } from '@dcloudio/uni-app'
import { createQRCodeAsync, getQRCodeCapabilities, QRCodeResult, QRCodeFail } from '@/uni_modules/lizhao-qrcode'
const busy = ref(false)
const imageSrc = ref('')
const status = ref('就绪')
let disposed = false
function generate(): void {
if (busy.value) return
const capabilities = getQRCodeCapabilities()
if (!capabilities.canRender || !capabilities.supportsDataUrl) {
status.value = '当前环境不支持 PNG Data URL,请检查平台能力和基座'
return
}
busy.value = true
createQRCodeAsync({ text: '0000123 中文二维码 👩🏽💻', size: 512, output: 'dataUrl' })
.then((result: QRCodeResult): void => {
if (disposed) return
imageSrc.value = result.imageSrc
status.value = '成功:' + result.width.toString() + '×' + result.height.toString() + ' px'
busy.value = false
})
.catch((error: QRCodeFail): void => {
if (disposed) return
status.value = error.errSubject + ' / ' + error.errCode.toString() + ':' + error.errMsg
busy.value = false
})
}
onUnload((): void => { disposed = true })
</script>
createQRCodeAsync 的参数类型是 QRCodeRenderOptions,只接受业务参数,不传 success、fail 或 complete。Promise 成功得到 QRCodeResult,失败得到 QRCodeFail;用 resolve/reject 处理一次终态。本例只产生 Data URL,没有临时文件需要释放。
模块二:Logo、透明背景与矩阵
先把 uni_modules/lizhao-qrcode/example/assets/logo.jpg 复制为 static/qrcode-logo.jpg(由用户准备的项目资源,不是插件自动生成文件),再在已注册的 uni-app x 页面脚本中调用下面的函数。普通 Vue3 使用同一业务字段,移除 UTS 类型注解即可;完整双宿主工具页也可直接开启“示例 Logo”,无需自行准备文件。
import { createQRCodeAsync, createQRCodeMatrixSync, getQRCodeCapabilities, QRCodeResult, QRCodeFail } from '@/uni_modules/lizhao-qrcode'
function generateWithLogo(): void {
const capabilities = getQRCodeCapabilities()
if (!capabilities.canRender || !capabilities.supportsLogoLocal) {
console.error('当前环境不支持本地 Logo,请先核对能力和验证范围')
return
}
createQRCodeAsync({
text: '0000123 中文二维码',
size: 768,
marginModules: 4,
errorCorrectionLevel: 'M',
background: 'transparent',
output: 'dataUrl',
logo: { source: '/static/qrcode-logo.jpg', sizeRatio: 0.15, paddingRatio: 0.08, backgroundColor: '#ffffff' }
}).then((result: QRCodeResult): void => {
// Logo 会把实际纠错等级提升为 H;与生成结果一致的矩阵须使用实际等级和版本。
console.log('PNG 已生成,实际纠错等级=', result.effectiveErrorCorrectionLevel)
try {
const matrix = createQRCodeMatrixSync({
text: '0000123 中文二维码', errorCorrectionLevel: result.effectiveErrorCorrectionLevel,
minVersion: result.version, maxVersion: result.version
})
console.log('矩阵模块数=', matrix.moduleCount, 'UTF-8 字节数=', matrix.byteLength, 'ECI=', matrix.hasEci)
} catch (error) {
console.error('矩阵生成失败:', error.message)
}
}).catch((error: QRCodeFail): void => {
console.error(error.errSubject, error.errCode, error.stage)
})
}
Logo 的 sizeRatio 是包含衬底与内边距的遮挡区域边长除以码区边长;paddingRatio 是每侧内边距除以遮挡区域边长。Logo 衬底只作用于 Logo 区域,不会把整张透明 PNG 改成白底。功能图形优先保留,Logo 可能被功能模块覆盖;查看结果 warnings 后仍须按实际展示背景扫描验收。
纯矩阵调用只接受 QRCodeMatrixOptions,没有 Logo、颜色、尺寸、输出或超时选项。cells 按行存储,索引为 y * moduleCount + x;functionModules 为同长度的保护掩码,两数组均不含静区。不要把矩阵失败替换成空矩阵,也不要在输出图片上插值拉伸或裁切静区。
模块三:回调、临时文件所有权与诊断
需要真实文件时先检查 supportsFileOutput。下例是可加入 uni-app x 页面 <script setup lang="uts"> 的独立文件调用与清理流程;通过按钮调用 generateFile()。普通 Vue3 使用相同 API,去掉类型注解。示例不保存用户 Logo 路径,只登记本次成功返回的 filePath:
import { ref } from 'vue'
import { onUnload } from '@dcloudio/uni-app'
import { createQRCode, getQRCodeCapabilities, getQRCodeDiagnostics, removeQRCodeFileSync, QRCodeResult, QRCodeFail, QRCodeCompleteResult } from '@/uni_modules/lizhao-qrcode'
const imageSrc = ref('')
const status = ref('就绪')
let disposed = false
let ownedFiles: Array<string> = []
function releaseFiles(): void {
if (!disposed) imageSrc.value = ''
const remaining: Array<string> = []
for (const path of ownedFiles) {
try {
const released = removeQRCodeFileSync(path)
if (!released.removed) remaining.push(path)
} catch (error) {
remaining.push(path)
console.error('临时文件释放失败,保留登记以便重试:', error.message)
}
}
ownedFiles = remaining
}
function generateFile(): void {
if (!getQRCodeCapabilities().supportsFileOutput) {
status.value = '当前平台不支持文件输出'
return
}
releaseFiles()
const requestId = createQRCode({
text: '0000123 中文二维码', output: 'file', timeoutMs: 10000,
success: (result: QRCodeResult): void => {
const path = result.filePath
if (path != null) ownedFiles.push(path)
if (disposed) { releaseFiles(); return }
imageSrc.value = result.imageSrc
status.value = '文件生成成功,使用结束后释放'
},
fail: (error: QRCodeFail): void => {
if (!disposed) status.value = error.errSubject + ' / ' + error.errCode.toString() + ':' + error.errMsg
},
complete: (result: QRCodeCompleteResult): void => {
console.log('请求结束=', result.requestId, '成功=', result.success)
const diagnostics = getQRCodeDiagnostics()
console.log('保留诊断条数=', diagnostics.entries.length, '已丢弃=', diagnostics.droppedEntries)
}
})
console.log('已提交请求=', requestId)
}
onUnload((): void => { disposed = true; releaseFiles() })
createQRCode 立即返回请求编号,参数失败也异步进入失败终态:success 与 fail 互斥且至多一次,随后已传入的 complete 恰好一次。业务回调自身抛异常会被隔离并记录,不会再次派发成功或失败。complete 是带 success/result/error 的数据封套,不能把它直接当 PNG 结果使用。
公开 API 没有取消方法。页面卸载后停止 UI 更新、释放已取得文件;若请求晚成功,仍精确释放它真实返回的文件。timeoutMs 包含排队、编码、Logo、绘图、PNG 和文件步骤;超时以 9331007 失败,之后不会再派发晚成功或第二次 complete。当前最多八个在途请求,超过上限以 9331005 失败;批量业务应自行限流。
完整工具页底部提供“一键复制全部日志”“复制下一段”“刷新报告”“完整报告/手动复制”“查看当前分段”。完整报告包含环境来源、插件快照和当前保留的会话日志;页面可见五条摘要不等于复制内容。先固定快照再分段,只有真实剪贴板 success 才推进;失败保留当前分段并展开可选文本,原日志不会清空。详细使用和实际验收边界见 uni_modules/lizhao-qrcode/example/readme.md。
API 用途速查
全部公开业务 API 共六个;原生桥接、编码内部函数和报告 helper 不属于插件业务 API。
| API | 签名 | 用途与失败方式 |
|---|---|---|
createQRCode |
(options: CreateQRCodeOptions): string |
异步回调生成 PNG,立即返回请求编号;终态通过回调交付。 |
createQRCodeAsync |
(options: QRCodeRenderOptions): Promise<QRCodeResult> |
Promise 生成 PNG;失败 reject QRCodeFail,不接收业务回调字段。 |
createQRCodeMatrixSync |
(options: QRCodeMatrixOptions): QRCodeMatrixResult |
同步生成原始矩阵;失败抛 QRCodeFail。 |
getQRCodeCapabilities |
(): QRCodeCapabilities |
查询当前宿主、绘图和来源能力;查看 unavailableReasons。 |
getQRCodeDiagnostics |
(): QRCodeDiagnostics |
获取本地脱敏诊断快照,不自动上传、不清空日志。 |
removeQRCodeFileSync |
(filePath: string): QRCodeRemoveFileResult |
同步精确释放登记输出;失败抛 QRCodeFail。Web 明确不支持。 |
图像生成参数与回调
下列业务字段由 QRCodeRenderOptions 与 CreateQRCodeOptions 共用;只有后者包含三个业务回调。所有整数和比例均须为有限数字,不能把数字字符串当作数字传入。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
text |
string | 是 | 原样编码的非空文本;无效 UTF-16 代理项失败。字数不等于 UTF-8 字节数或二维码容量。 | 无 | 有效 Unicode 字符串,空格和换行原样保留 |
size |
number | 否 | 最终正方形 PNG 边长,单位为物理像素,不是 rpx 或 CSS 显示尺寸。 | 512 | 64–2048 的整数 |
marginModules |
number | 否 | 每边最少静区的模块数。 | 4 | 4–32 的整数 |
errorCorrectionLevel |
QRCodeErrorCorrectionLevel | 否 | 请求纠错等级;设置 Logo 后实际强制使用 H。 | M | L、M、Q、H |
minVersion |
number | 否 | QR Model 2 最小版本。 | 1 | 1–40 的整数 |
maxVersion |
number | 否 | QR Model 2 最大版本,不小于 minVersion。 | 40 | 1–40 的整数 |
foreground |
string | 否 | 深色模块颜色;与非透明 background 相同则失败。 | #000000 | #RRGGBB,大小写均可 |
background |
string | 否 | 浅色模块与静区背景;透明时浅模块保留透明度。 | #ffffff | #RRGGBB、transparent |
moduleShape |
QRCodeModuleShape | 否 | 码点造型,须在能力支持列表中;未支持返回9331008。 | square | square、rounded、dot |
finderShape |
QRCodeFinderShape | 否 | 三个定位码眼的造型,须在能力支持列表中。 | square | square、rounded |
output |
QRCodeOutput | 否 | 输出形式,须结合当前文件/Data URL 能力。 | dataUrl | dataUrl、file、both |
logo |
QRCodeLogoOptions 或 null | 否 | 中心 Logo 选项;省略或 null 表示不使用。 | null | 见下表 |
timeoutMs |
number | 否 | 整个异步请求预算,单位毫秒,排队也计时。 | 10000 | 100–60000 的整数 |
success |
(result: QRCodeResult) => void |
否 | 仅 createQRCode;成功时触发,至多一次。 | 不调用 | 与 fail 互斥 |
fail |
(error: QRCodeFail) => void |
否 | 仅 createQRCode;失败时触发,至多一次。 | 不调用 | 参数、能力、超时及其他真实失败 |
complete |
(result: QRCodeCompleteResult) => void |
否 | 仅 createQRCode;已传入时在 success/fail 之后恰好一次。 | 不调用 | 成功和失败均触发 |
modulePixels = floor(size / (moduleCount + 2 * marginModules)),必须至少为 1;多余物理像素留在两侧静区,可能相差 1 px,不会拉伸模块。颜色仅作格式与相同值校验;不同颜色也可能对比不足,仍须业务验收。
square表示原有方块,rounded表示圆角,dot表示圆点(仅码点)。Android、iOS、Web、微信源码均已接入真实像素绘制;实际可用值仍须先检查supportedModuleShapes/supportedFinderShapes,旧基座或平台未声明的合法造型返回9331008,非法造型返回9331001,不静默输出方块。数据样式保留其余功能模块,码眼只调整三个标准定位区;同步矩阵接口没有造型参数,编码矩阵与功能掩码不变。低分辨率的1px模块可能看起来仍像方块,导出后须按真实展示/印刷尺寸扫码。iOS源码与数学检查不代表Apple编译或iPhone已验收,详见注意事项。
Logo 参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
source |
string | 是 | 项目资源、本地临时 PNG/JPEG、PNG/JPEG Data URL 或 HTTPS;可用来源以运行时能力及平台条件为准。 | 无 | 不接受普通 HTTP、SVG 等非 PNG/JPEG 内容 |
sizeRatio |
number | 否 | 含衬底与内边距的遮挡区域边长 / 码区边长。 | 0.15 | 0.05–0.20 |
paddingRatio |
number | 否 | 每侧内边距 / 遮挡区域边长。 | 0.08 | 0–0.25 |
backgroundColor |
string | 否 | Logo 衬底色,不修改整个二维码背景。 | #ffffff | #RRGGBB |
原始 Logo 不超过 5 MiB,任一边不超过 4096,像素总数不超过 1600 万;损坏、无法访问、未知必要大小或超限均按真实失败处理,不会忽略 Logo 后伪装成功。平台条件、网络限制和内存边界见“注意事项”。
同步矩阵参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
text |
string | 是 | 与图像入口相同的原文编码和有效 Unicode 要求。 | 无 | 非空字符串 |
errorCorrectionLevel |
QRCodeErrorCorrectionLevel | 否 | 矩阵实际纠错等级;矩阵 API 本身不接受 Logo。 | M | L、M、Q、H |
minVersion |
number | 否 | 最小版本。 | 1 | 1–40 的整数 |
maxVersion |
number | 否 | 最大版本,须不小于 minVersion。 | 40 | 1–40 的整数 |
PNG 结果 QRCodeResult
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
requestId |
string | 是 | 本次插件请求编号,用于关联回调、阶段和诊断。 | 实际生成 | 无 |
imageSrc |
string | 是 | 可显示的真实 PNG 来源;dataUrl 输出为 Data URL,file/both 输出优先为文件路径。 | 实际输出 | 无空路径成功 |
dataUrl |
string 或 null | 是 | PNG Data URL;file 输出时为 null。 | 按 output 决定 | dataUrl/both 时非空 |
filePath |
string 或 null | 是 | 登记的真实临时文件路径;dataUrl 输出时为 null。不要自行改写或拼接路径。 | 按 output 决定 | file/both 时非空 |
mimeType |
string | 是 | 实际输出类型。 | image/png | 仅 PNG |
width |
number | 是 | PNG 宽,物理像素。 | 等于 size | 64–2048 |
height |
number | 是 | PNG 高,物理像素。 | 等于 size | 64–2048 |
version |
number | 是 | 实际选定的 QR Model 2 版本。 | 实际编码值 | minVersion–maxVersion |
moduleCount |
number | 是 | 每边码区模块数,不含静区,等于 17 + 4 × version。 | 实际编码值 | 21–177 |
modulePixels |
number | 是 | 每个模块占用的整数物理像素数。 | 实际布局值 | 至少 1 |
byteLength |
number | 是 | 原始文本的 UTF-8 字节数,不是 PNG 文件大小。 | 实际编码值 | 正整数 |
effectiveErrorCorrectionLevel |
QRCodeErrorCorrectionLevel | 是 | 实际纠错等级,Logo 存在时为 H。 | 实际编码值 | L、M、Q、H |
hasEci |
boolean | 是 | 是否携带 UTF-8 ECI 26;非 ASCII 文本为 true。 | 按实际文本 | true、false |
backgroundTransparent |
boolean | 是 | 是否使用透明背景。 | 按 background | true、false |
durationMs |
number | 是 | 提交到生成完成的耗时,毫秒。 | 实测 | 非负数 |
warnings |
Array |
是 | 透明底对比度、Logo 与功能图形重叠等提醒;不代替扫描验收。 | 无提醒时空数组 | 实际提醒 |
矩阵结果 QRCodeMatrixResult
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
version |
number | 是 | 实际 QR 版本。 | 实际编码值 | 1–40 |
moduleCount |
number | 是 | 每边模块数,不含静区。 | 17 + 4 × version | 21–177 |
byteLength |
number | 是 | 原文 UTF-8 字节数。 | 实际编码值 | 正整数 |
effectiveErrorCorrectionLevel |
QRCodeErrorCorrectionLevel | 是 | 本次矩阵的实际纠错等级。 | 实际编码值 | L、M、Q、H |
hasEci |
boolean | 是 | 是否携带 UTF-8 ECI。 | 按文本 | true、false |
cells |
Array |
是 | 行优先深浅模块,true 为深色,长度为 moduleCount²。 | 实际矩阵 | 不含静区 |
functionModules |
Array |
是 | 同长度功能图形保护掩码,true 位置不得被 Logo 或样式破坏。 | 实际掩码 | 不含静区 |
完成封套 QRCodeCompleteResult
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
requestId |
string | 是 | 与本次返回编号及终态对应。 | 实际请求编号 | 无 |
success |
boolean | 是 | 标识成功还是失败。 | 实际终态 | true、false |
result |
QRCodeResult 或 null | 是 | success=true 时非空,失败时为 null。 | 按终态 | 真实 PNG 结果 |
error |
QRCodeErrorSnapshot 或 null | 是 | success=false 时非空,成功时为 null;是可序列化数据,不是原生异常实例。 | 按终态 | 见错误字段 |
文件释放参数与结果
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
filePath(入参) |
string | 是 | 本进程由插件成功返回、仍在登记中的原样路径。 | 无 | 不接受用户任意路径、Logo 路径或目录 |
filePath(QRCodeRemoveFileResult) |
string | 是 | 已释放的原样路径。 | 等于入参 | 不写入诊断日志 |
removed(QRCodeRemoveFileResult) |
boolean | 是 | 成功时为 true;失败抛错,不以 false 假装成功。 | true | 无 |
该接口不递归、不执行目录清理。再次释放、进程重启后失去登记、非插件输出或已失效路径按 9331009 处理;合法登记文件的真实 I/O 失败可能为 9331006。Web 的文件能力与释放均返回 9331008。
能力结果 QRCodeCapabilities
能力查询和诊断查询均无入参。以下字段为当前环境的实际检测值,不是已发布平台勾选;方法存在也不代表网络、域名、图片或设备条件必然满足。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
platform |
string | 是 | 插件识别的运行端。 | 运行时读取 | 如 app-android、app-ios、web、mp-weixin |
host |
string | 是 | 编译宿主。 | 构建条件确定 | uni-app、uni-app x |
canEncode |
boolean | 是 | 共享矩阵编码是否可用。 | 实际能力 | true、false |
canRender |
boolean | 是 | 绘图实现已安装且当前环境就绪。 | 实际检测 | true、false |
supportsFileOutput |
boolean | 是 | 真实文件输出能力。 | 实际检测 | Web 为 false |
supportsDataUrl |
boolean | 是 | PNG Data URL 输出能力。 | 实际检测 | true、false |
supportsTransparentBackground |
boolean | 是 | 透明背景能力。 | 实际检测 | true、false |
supportsLogoLocal |
boolean | 是 | 项目资源或本地来源能力;仍需真实可读。 | 实际检测 | true、false |
supportsLogoHttps |
boolean | 是 | HTTPS Logo 方法能力;仍受网络和安全条件限制。 | 实际检测 | true、false |
supportsLogoDataUrl |
boolean | 是 | PNG/JPEG Data URL Logo 能力。 | 实际检测 | true、false |
supportedModuleShapes |
Array |
是 | 当前可绘制码点造型;旧实现只回退square,不可绘图时为空。 | 实际检测 | square、rounded、dot的受控子集 |
supportedFinderShapes |
Array |
是 | 当前可绘制定位码眼造型;未声明的造型不能使用。 | 实际检测 | square、rounded的受控子集 |
minOutputSize |
number | 是 | 合同允许的最小 PNG 边长,物理像素;不保证所有文本均能放入。 | 64 | 需同时满足矩阵布局 |
maxOutputSize |
number | 是 | 合同允许的最大 PNG 边长,物理像素。 | 2048 | 无 |
minWxBaseLibrary |
string 或 null | 是 | 微信 2D 方法的官方基础库门槛;非微信或无法确认时为 null。 | 按平台 | 2.16.1 或 null;HTTPS 另有条件 |
unavailableReasons |
Array |
是 | 方法缺失、环境未就绪或源码身份不匹配等原因。 | 无原因时空数组 | 按实际环境 |
诊断结果 QRCodeDiagnostics 与条目
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
pluginId |
string | 是 | 插件标识。 | lizhao-qrcode | 无 |
pluginVersion |
string | 是 | 来自本次插件构建的 package.json,由构建生成,不在业务页面硬编码。 | 构建生成 | 无 |
sourceBuild |
string | 是 | 当前源码身份,用于匹配插件与示例。 | 构建生成 | 不是客户应用的 HX/基座版本 |
encoderRevision |
string 或 null | 是 | 编码器来源修订标识;不可确认时为 null。 | 构建记录 | 无 |
host |
string | 是 | 插件识别的宿主。 | 构建条件确定 | uni-app、uni-app x |
platform |
string | 是 | 插件识别的运行端。 | 实际环境 | 无 |
nativeBuild |
string 或 null | 是 | 绘图实现回报的构建身份;未知为 null。 | 实际回报 | 不等于安装包或基座完整身份 |
capabilities |
QRCodeCapabilities | 是 | 查询时的能力快照。 | 实际检测 | 见能力表 |
entries |
Array |
是 | 按发生时间整理的保留条目,含可取得的脱敏原生诊断。 | 当前缓存 | 不保证保留全部历史 |
droppedEntries |
number | 是 | 容量限制、采集失败等导致的已丢弃计数。 | 当前计数 | 非负数 |
maxEntries |
number | 是 | 插件诊断合并后的条数上限。 | 200 | 无 |
maxTextLength |
number | 是 | 插件诊断文字预算,含用于估算的条目元数据开销,按 UTF-16 单元计。 | 65536 | 不等于 PNG 字节数 |
time(条目) |
string | 是 | ISO 8601 时间,携带时区。 | 实际采集 | 无 |
level(条目) |
QRCodeDiagnosticLevel | 是 | 条目级别。 | 实际采集 | debug、info、warn、error |
requestId(条目) |
string | 是 | 请求关联编号;无对应生成请求时可为空。 | 实际编号 | 无 |
operation(条目) |
string | 是 | API 或原生阶段来源。 | 实际记录 | 无 |
stage(条目) |
QRCodeStage | 是 | 处理阶段。 | 实际记录 | 见错误字段后的阶段列表 |
durationMs(条目) |
number | 是 | 阶段或请求关联耗时,毫秒。 | 实际采集 | 非负数 |
detailsJson(条目) |
string | 是 | 脱敏的事件、长度、格式或错误元数据;不包含原文、图片 Base64 或完整敏感 URL。 | 实际记录 | 原生不可采集信息须明确边界 |
同步矩阵等同步 API 抛错时,受控的错误码、操作与阶段也进入插件诊断快照,完整报告会保留这些条目。诊断写入失败不会替换原始业务错误或改变回调合同;同步错误没有生成请求编号时仍允许 requestId 为空。
错误对象与错误上下文
QRCodeFail 在失败回调、Promise reject 和同步抛错中使用,包含下列字段;QRCodeErrorSnapshot 在 complete/诊断场景保留相同数据字段,避免把原生异常对象穿过宿主桥接。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
errSubject |
string | 是 | 统一错误主题。 | lizhao-qrcode | 无 |
errCode |
QRCodeErrorCode | 是 | 九个真实错误码之一。 | 实际失败 | 见错误码表 |
errMsg |
string | 是 | 可识别的失败说明。 | 实际错误 | 不拼接二维码原文或来源凭据 |
operation |
string | 是 | API/操作名;也是 QRCodeErrorContext 的必填字段。 | 实际操作 | 无 |
requestId |
string | 是 | 生成请求编号;同步能力/释放等无生成请求时可为空;也是 QRCodeErrorContext 的必填字段。 | 实际编号或空字符串 | 无 |
stage |
QRCodeStage | 是 | 失败发生阶段;也是 QRCodeErrorContext 的必填字段。 | 实际阶段 | 见下文 |
nativeType |
string | 是 | 可取得的原生异常类型,进入公开边界前脱敏;QRCodeErrorContext 中可省略。 | 无详情时空字符串 | 不伪造异常类型 |
nativeCause |
string | 是 | 可取得的底层原因或说明;QRCodeErrorContext 中可省略。 | 无详情时空字符串 | 可能明确写 unknown/未采集原因 |
nativeStack |
string | 是 | 可取得的脱敏原生堆栈;QRCodeErrorContext 中可省略。 | 无详情时空字符串 | 不伪造堆栈 |
QRCodeStage 的可选值为 validate、encode、loadLogo、render、writeFile、complete、release、capability。QRCodeErrorContext 只是构造与桥接使用的公开数据类型,不是新增业务 API;客户端调用无需手工构造它。
错误码说明
所有插件错误的 errSubject 均为 lizhao-qrcode。以 errCode 与 stage 判断处理方式,并保留请求编号和脱敏诊断;不要把 null、空路径、空矩阵或超时后的晚结果解释为成功。
| 错误码 | 含义 | 处理建议 |
|---|---|---|
| 9331001 | 参数无效 | 检查非空原文、有效 Unicode、数字类型/整数范围、版本先后关系、颜色、Logo 比例与回调类型。 |
| 9331002 | 内容超过所选版本和纠错等级容量 | 增大 maxVersion 或减少内容;Logo 使用 H 会降低可用容量。不能把 7089 当成所有文本都可容纳的字符数。 |
| 9331003 | 输出尺寸不足以清晰绘制二维码 | 增大 size 或减少内容;须同时容纳码区与每边静区,至少 1 物理像素/模块。 |
| 9331004 | Logo 加载或解码失败 | 检查 PNG/JPEG 容器、真实可读路径、5 MiB/4096/1600 万像素上限及网络条件;不要静默丢弃 Logo。 |
| 9331005 | 图像绘制或 PNG 编码失败 | 查看 render 阶段和原生诊断;也可能是超过八个在途请求,需限流。 |
| 9331006 | 文件写入或读取失败 | 检查应用/小程序可写目录、真实 I/O 错误和输出上限;释放时保留失败文件登记以便重试。 |
| 9331007 | 二维码生成超时 | 本次请求已失败,插件清理在途资源且不再派发晚终态;按业务决定是否用新请求重试。 |
| 9331008 | 当前平台或所需能力不支持 | 先检查能力与原因;Web 的 file/both/释放明确属于此错误,不返回虚构路径。 |
| 9331009 | 文件不属于本插件或已失效 | 只释放本进程成功返回且仍登记的原样路径;重复释放、失去登记或任意用户路径均不可删除。 |
公开 API 没有主动取消方法,也没有取消错误码。页面卸载不等于生成已取消;超时与参数/平台失败均有明确终态。任何“结果未知”、桥接异常或图片预览失败都应保留真实状态与报告,不能改成成功;PNG 生成成功也不代表业务保存、分享或扫码识别已经成功。
注意事项
本次发布的平台范围
| 平台/宿主 | 本次声明 | 验证与边界 |
|---|---|---|
| Web Chrome · uni-app Vue2/Vue3 | 支持 | HX5.33完整宿主编译、真实页面与PNG反解;图片仅Data URL,HTTPS Logo需满足跨域读取规则。 |
| Web Chrome · uni-app x | 支持 | HX5.33隔离宿主、Canvas和移动布局验证;无需App自定义基座。 |
| Web Safari及其他未验浏览器 | 待验证 | 未执行本轮Safari真实浏览器验收,不作已支持承诺。 |
| Android / iOS | 候选,待验收 | 原生源码与部分生成物检查已有;当前新身份仍需匹配基座及设备验收,iOS还需Apple编译/链接。 |
| 微信小程序 | 候选,待验收 | 源码、编译/PNG算法检查不替代当前版本开发工具和真机验收。 |
| Harmony / 其他小程序 | 不支持 | 未实现对应平台绘图;按能力检测和9331008处理。 |
最低接入版本按本次实测环境收敛为HBuilderX/uni-app/uni-app x 5.33;未经复验不承诺旧版本。默认点击“一键复制全部日志”即可复制整份固定快照,分段只在复制或发送受限时备用,不会要求先逐段操作。
本轮当前源码的Android/iOS双宿主appResource导出已通过,但尚未完成匹配基座和设备验收;微信两宿主已产生编译输出,其中传统uni-app工程仍被App拦截器的6条鸿蒙平台/UA兼容性静态告警拦住发布门禁,因此微信不标记已支持。该告警尚未作为真实鸿蒙微信业务验收通过,不能只凭导出成功取消边界。
平台、宿主与验收范围
以下区分源码能力与已完成验证。uni_modules/lizhao-qrcode/package.json 的平台勾选仍处于候选状态,正式支持需完成后续宿主与发布核验。API 运行时能力返回 true 不表示本表尚未验证的环境已经通过。
本次移动编辑器与造型变更已通过真实Vue2/Vue3状态/生命周期、完整Web示例编译、真实浏览器Canvas造型/透明/Logo检查;Android有实际Kotlin绘图函数像素与PNG反解、匹配源码独立APK编译,微信有生产绘图/软件PNG与独立反解。iOS当前只有源码/数学核对与新增XCTest用例,未在Apple环境执行。完整App基座、实际手机选图、真机造型扫码及其他浏览器仍须按所用平台验收;Web选择文件不等于手机系统相册已验收。
下表保留此前A5–A7基础能力的历史证据;其中“当前”指对应历史阶段源码,不能替代本次新增造型、Vue2兼容及移动布局的同源验收。此前使用只包含交付示例与插件的独立完整uni-app Vue3、uni-app x工程,完成Web、微信编译及Android/iOS appResource导出,未覆盖原项目所有路由或App最终原生运行。
Chromium 验收覆盖交付页面的 Web 编译产物。App 则分别核对主侧 Vapor/bytecode/styleIsolation 2 和配对侧 VDOM 配置,不把 Web 页面结果当原生模式运行结果。三种模式的插件实际资源已用官方匹配运行库联编;VDOM 示例与报告的实际生成 Kotlin 也已联编通过。Vapor 输出页面字节码,不冒称可读应用 Kotlin 已联编;Apple 编译、匹配基座与设备运行仍须另验。
| 平台/宿主 | 当前实现边界 | 已有验证与未验证范围 |
|---|---|---|
| uni-app Vue2/Vue3 | 普通JS选项式页面调用同一根API;有独立完整示例 | 本次真实Vue2/Vue3运行时与Web编译通过;下列A5–A7的历史页面/剪贴板证据是Vue3基线。完整App和设备仍须匹配源码验收。 |
| uni-app x | UTS 页面调用同一根 API;有独立完整示例 | 本轮完成上述独立宿主编译/资源导出,Windows Chromium 页面、实际剪贴板和窄屏验收通过;原项目全路由、App 真基座与设备未验。 |
| Android App | 原生绘图、Data URL 与登记文件实现 | A6 当前源码在 MI 8(Android 10/API 29)独立 APK 的 18 项原生回归通过,10 张实际二维码 PNG 独立反解通过,设备安装包哈希与本次产物一致;独立 APK 不含 UTS 桥接/宿主页面。完整 App 仍需匹配新源码的原生联编/自定义基座验收。 |
| iOS App | Swift 候选实现,含异步桥接与文件释放 | 本轮完成独立双宿主 appResource 导出;未完成 Apple SwiftCompile、链接或 iPhone 验收,资源导出不等于 Apple 编译。 |
| Web | OffscreenCanvas 2D,缺失时降级到未附着 DOM 的 Canvas;仅 dataUrl | A5 独立双宿主在 Windows Chromium 完成真实页面、复制及四张 PNG 反解;A6 双宿主批量公开 API 回归通过,另有 60 张实际 PNG 逐张独立反解。Safari、iOS Web、公网 HTTPS 成功及跨源 CORS/TLS 未验。 |
| 微信小程序 | wx.createOffscreenCanvas 2D、像素读回与本地 PNG 编码;dataUrl/file/both | A7 当前完整双宿主示例在微信开发工具基础库 3.17.3 各完成六组真实页面事件验证,六张 PNG 独立反解通过;实际文件清理及完整/分段报告的微信 SDK、Windows 剪贴板回读通过。Android/iPhone 微信真机及体验版仍未验。 |
| Harmony | 没有完成可声明支持的平台实现 | 不声明支持。 |
| 支付宝及其他小程序 | 没有完成对应绘图实现 | 不声明支持;不要推断微信实现可直接用于其他小程序。 |
传统 uni-app Web 的真实运行暴露了全局 UniError 与 JSON.parseObject 未注入的问题。当前已在插件边界修复:仅传统非 App 宿主从官方 @dcloudio/uni-shared 引入错误基类,并用局部标准对象解析适配回应;不修改全局 JSON,也不要求业务页面注入全局对象。该修复保持六个公开 API 与九个错误码不变,不代表完整平台终验已经通过。
Windows Chromium 下两宿主各完成七项实际 UI 检查:回调 PNG、Promise 透明 Logo、长 Data URL Logo 输入、9331001 失败与同步错误报告、完整报告剪贴板回读、各七段实际回读后重组固定快照,以及 390px/320px 下的 Flex 换行、按钮至少 44×44px 和表单无横向溢出。四张实际 PNG 经独立 ZXing 反解,保留原文、空白、前导零与 Unicode;这些结果只覆盖本轮实际图片与环境。
A6 在上述两种完整 Web 宿主追加真实根入口批量回归:各自一次提交 20 个请求时,8 个成功、12 个因超过在途上限返回 9331005,success/fail 二选一且 complete 各一次;使用 4 个工作单元调度 20 项则全部成功。包含同尺寸换文、回调/Promise、透明/Logo、513px 奇数尺寸、提交后修改参数及客户回调抛异常。两宿主各 30 张真实输出均逐张独立反解到对应原文,未串图。该结果不是“20 个同时处理中”的承诺;批量业务应限制在途数量,实际耗时只代表该次本机观测。
A7 在微信开发工具中使用真实客户页面验证 Data URL、file、both、透明 Logo/H、513px、同尺寸换文、旧文件自动清理、精确释放、9331001 与矩阵错误。两种宿主各三张真实 PNG 反解到对应输入,独立 RGBA 检查确认透明与不透明结果。完整报告与全部分段分别经微信 SDK 和 Windows 剪贴板回读,按首尾标记重组同一快照;本次两宿主分别为 14 段和 6 段,段数依报告长度变化。工具的页面查询接口在本机超时,自动化通过编译 WXML 的真实 bindinput/bindtap 事件入口执行,另有实际按钮点击与截图交叉验证;未改页面状态、wx API 或结果来代替调用。platform=devtools 才是环境依据,工具模拟的 iPhone 型号与 iOS 系统值不代表真机。
图片、像素与来源
- 输出固定为 PNG,最大 8 MiB;
size为物理像素,页面<image>的 CSS 尺寸不会提高 PNG 分辨率。容量依 QR 版本、模式、UTF-8 字节数和纠错等级变化;中文/emoji 不按一字符一字节计算。 - 编码器为整串选择数字、字母数字或 UTF-8 字节模式,非 ASCII 携带 ECI 26;无效代理项明确失败。QR 版本范围为 1–40,不承诺扫描器对业务内容、显示背景或后续压缩图片的识别效果。
- Logo 限 PNG/JPEG,原始字节不超过 5 MiB,单边不超过 4096、总像素不超过 1600 万。扩展名或 Data URL 标签不代替实际格式校验。HTTPS URL 不等于网络必然成功,普通 HTTP 不是允许的网络来源。
- Web 项目资源/本地来源受浏览器访问边界限制,本机任意磁盘路径不能当作可读网页资源;同源资源、Data URL 与 HTTPS Logo 仍须真实读取、解码并符合 CORS/TLS 等条件。file/both 与文件释放明确返回 9331008。
- 微信 2D 方法的官方最低基础库门槛为 2.16.1,实际仍逐项检测相关方法;本候选只在 3.17.3 开发工具实测。HTTPS Logo 另要求 3.2.2+、manual 重定向控制能力和小程序合法域名条件,真实公网/重定向/域名矩阵未验,不能降低基础库后声称已通过。
- 微信按已核实的本地大小限长读取,并串行执行绘图/PNG 来约束峰值;Image 缺少缩小解码参数,4096×4096 RGBA 理论约 64 MiB。八个在途请求上限不表示可同时解码八张最大 Logo,业务仍须限流并测试内存较低的设备。
- 微信 filePath 是实际登记输出路径,不假造 file:// 前缀;只在本进程仍有所有权记录时可释放。App 临时文件同样不承诺永久存在,应由业务在使用前确认和按需持久化。
权限、生命周期与基座
二维码在本地编码和绘图,不需要相机、相册或危险存储权限,不默认上传文本、图片或日志;仅显式传入 HTTPS Logo 时下载该图片。Android HTTPS Logo 使用普通 INTERNET 网络权限。保存相册、系统分享及相应权限由业务另行处理,不属于六个公开 API。
不要删除正在预览、分享或保存流程中仍需读取的临时文件。页面卸载时停止 UI 更新、精确清理已取得文件,并处理晚成功文件;公开 API 无取消入口。超时清理不恢复为成功,后续操作使用新的请求编号。
App 必须使用包含当前原生实现且身份匹配的联编或自定义基座。修改原生实现、公共 UTS 且影响原生生成物、依赖、权限、Manifest 或原生资源时重新联编/重打基座;仅修改页面、样式、普通资源或文档通常无需重打。WGT 不能修复旧基座原生代码不匹配。独立原生 APK 的结果不代替完整宿主或其他平台通过。
诊断报告、隐私与复制
完整示例默认保留有界日志:普通会话缓存最多 300 条/96×1024 UTF-16 单元,关键错误另保留最多 24 条/24×1024 单元;超限、单条截断、写入失败都有计数。插件诊断快照也有独立容量与丢弃计数。报告中的“完整”指本次快照内的全部保留记录,不是无限历史。
报告包含编号、ISO 时间与 UTC 时区、正文 UTF-16 长度、日志条数及首尾标记。分段固定同一快照,附编号、分段序号和总数;只在实际 uni.setClipboardData.success 后推进,失败或晚/重复回执不能推进。完整报告/当前分段提供可选文本手动复制回退;刷新报告会新建快照并从第一段开始,不清空会话日志。
本轮两宿主均完成完整报告及各七段的实际剪贴板回读,重组时仅归一 Windows CRLF/LF 换行;桌面可选文本经实际选中、Ctrl+C 与回读核对通过。复制失败通过浏览器底层 writeText 拒绝与 execCommand=false 故障注入验证,uni SDK 和页面调用保持真实:失败不推进、恢复后仍复制同一分段。该证据不是操作系统弹窗拒绝;实际浏览器权限拒绝曾被官方 SDK 的备用路径成功处理,手机长按选择与设备剪贴板未验。
日志只记录脱敏参数摘要、类型、长度、阶段、结果元数据、错误字段与耗时;二维码原文、Logo 字节/Data URL、完整路径/URL、Token、Cookie、密码、私钥和个人信息不进入缓存或报告,不自动上传。自行扩展日志时也应先归纳元数据并脱敏,不能只依赖后置正则清理任意原文。
插件和示例版本/源码标记由本次 package 与源码构建生成;它们不是客户安装包实际使用的 HX、编译器、运行时或基座版本。环境字段来自实际 API 或明确构建注入,并标注来源;取不到时写 unknown/原因,不拿开发机环境冒充客户包。Windows LSP 因无法读取平台设置未完成;独立宿主编译、资源导出与浏览器验收不能替代 LSP 正常结果、实际 App 原生联编、Apple 编译或设备/真基座验收。
作者系列 UTS 插件
以下为作者已上架的 UTS 插件,详情见各市场页面或作者主页。
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 | 查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 | 查看插件 |
lizhao-camera-pro |
原生相机、拍照录像、水印与媒体保存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-hce-card |
NFC 虚拟卡、APDU 交互与 NDEF 标签模拟 | 查看插件 |
lizhao-health |
健康数据授权、查询、统计与写入 | 查看插件 |
lizhao-http-server |
本地 HTTP 服务、文件传输与实时通信 | 查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 | 查看插件 |
lizhao-id-photo |
证件照制作、尺寸换算、换底色与模板换装 | 查看插件 |
lizhao-img-eraser |
图片去水印、局部修复与原生编辑器 | 查看插件 |
lizhao-live-activity |
实时活动、系统胶囊与普通通知降级 | 查看插件 |
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-notify-pro |
本地通知、点击动作、进度与定时提醒 | 查看插件 |
lizhao-novel-reader |
原生小说阅读、仿真翻页与段落评论 | 查看插件 |
lizhao-office-view |
Office 与 PDF 文件预览、进度与缓存管理 | 查看插件 |
lizhao-pdf-pro |
PDF 阅读、签批、真实写回与页面处理 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-serial-port |
路径串口、USB 串口、多会话收发与诊断 | 查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |
lizhao-tcp-pro |
TCP 客户端、服务端、多连接与诊断 | 查看插件 |
lizhao-usb-storage |
U 盘、移动硬盘文件浏览、读写与批量复制 | 查看插件 |
lizhao-video-editor |
视频裁剪、压缩、取帧与 FFmpeg/FFprobe | 查看插件 |
lizhao-video-feed |
短视频上下滑、短剧选集与分页加载 | 查看插件 |
lizhao-video-player |
原生视频播放器、清晰度与播放交互 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-vpn-pro |
企业 VPN、IKEv2、安全接入与脱敏诊断 | 查看插件 |
lizhao-wechat-kit |
微信登录、分享、支付、小程序与客服 | 查看插件 |
默认全量复制每次都会生成包含最新环境、SDK快照和保留日志的新报告,无需先点刷新。生成报告失败时不会静默复制旧报告;备用分段继续使用同一固定快照,点击全部复制或刷新报告会开始新的快照。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6486
赞赏 5
下载 12719260
赞赏 1958
赞赏
京公网安备:11010802035340号