更新记录

1.2.2(2026-11-07)

  • 优化说明文档,补齐“作者系列 UTS 插件”清单及插件市场链接,便于按能力查找。

1.2.1(2026-11-06)

  • 修复示例页面和辅助模块使用相对引入路径的问题,统一通过 @/uni_modules/ 引用插件内文件,复制页面到其他目录时无需另行复制辅助代码。

1.2.0(2026-10-16)

  • Android 最低声明扩展到 Android 6 / API 23,覆盖 Android 10;API23–29 使用自带 IKEv2/ESP 与 VpnService,API30+ 继续使用系统 IKEv2。
  • 低版本分支保留密码(EAP-MSCHAPv2)、PSK 与 KeyChain 客户端证书三种认证,加入真实 TUN/底层网络保护、完整重连和流量统计;13个公共 API 保持兼容。
  • 原生核心按 ARM64/ARMv7 提供 API23 库、可重现构建身份及分立第三方许可/必要源码材料,不改变插件自有代码的发布方式。
  • 两宿主示例增加版本生成校验、原生诊断文件采集和手动分段复制;保留真实状态/错误及脱敏。
  • 本地源码、资源和原生联编证据单独记录;真实网关互操作、授权、设备及匹配基座仍须验收,不能把此候选当作已发布或真机已通过。
查看更多

平台兼容性

uni-app(5.23)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
√ √ × × - - √ √ ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(5.23)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × √ √ × -

lizhao-vpn-pro 企业 VPN 安全接入

介绍

在 uni-app / uni-app x 的 Android、iOS App 中接入客户自有 IKEv2/IPsec VPN,统一完成配置校验、系统授权、连接、状态监听、断开与脱敏诊断;服务器、账号、证书和密钥由客户授权管理,插件不提供公共节点。

服务器、账号、证书、密钥和网络策略均由客户自行提供、授权和管理。插件不提供公共节点,不上传配置,不把“启动请求已提交”伪装成“隧道已经连接”。

功能特色

功能 完整能力说明 API / 配置
Android 6 起接入 API23–29 使用 VpnService + IKEv2/ESP;API30+ 保留 VpnManager + Ikev2VpnProfile,iOS 使用 NEVPNManager + NEVPNProtocolIKEv2。 见第六章 API 与参数
三种认证方式 用户名密码、预共享密钥、客户端证书,配置校验会提前拦截互斥项和缺失项。 见第六章 API 与参数
统一 11 状态 从 idle、preparing 到 connected、reconnecting、failed,Android/iOS 使用同一状态合同。 见第六章 API 与参数
抗乱序会话 每次操作使用 sessionId + sequence 关联,旧会话、重复事件和乱序事件不会覆盖当前状态。 见第六章 API 与参数
回调可预测 一次性 API 的 success/fail/complete 各自至多交付一次;持续状态通过 onVpnEvent/offVpnEvent 管理。 见第六章 API 与参数
按引擎报告能力 Android 6–10 的用户态引擎可提供会话收发统计;系统引擎拿不到独立统计时,supportsTrafficStats 明确为 false。未接入的引擎和平台返回结构化错误。 见第六章 API 与参数
凭据最小暴露 iOS 密码和 PSK 只进入不可同步的本机 Keychain,并向系统配置传 persistent reference;证书使用 Keychain identity reference。 见第六章 API 与参数
双重脱敏 日志写入前脱敏,诊断组装时逐字段再次脱敏后序列化,保留有效 JSON;诊断类型从设计上排除 profile 和 credentials。 见第六章 API 与参数
私有诊断文件 导出到 App 私有缓存目录,调用方不能指定任意文件路径。 见第六章 API 与参数
双项目示例 同时提供 uni-app Vue 页面和 uni-app x UVUE 页面,先查能力,再校验配置,最后进入真实连接。 见第六章 API 与参数

适合哪些场景

业务方向 适用场景与说明
1 政务、国企、金融、医疗等需要从移动端安全访问内网系统的应用。
2 OA、ERP、MES、仓储、巡检和远程运维等专网业务。
3 需要统一 Android/iOS 调用方式,同时保留平台真实状态和错误细节的项目。
4 需要用户名密码、预共享密钥或客户端证书认证的标准 IKEv2 服务。
5 需要在客户现场导出不含账号、密码、密钥和私钥的诊断文件,缩短联调时间的项目。

下载与导入

  1. 从插件市场通过 HBuilderX 导入完整 uni_modules/lizhao-vpn-pro/;API 和类型只从 @/uni_modules/lizhao-vpn-pro 导入。
  2. 将对应页面复制到业务目录,在 pages.json 注册后运行。先查询能力、校验配置,再处理系统授权,不跳过任何一步。
  3. 首次接入或原生 Kotlin / Swift、Manifest、JNI、entitlement 等变化,须重新联编并安装匹配自定义基座;WGT 不能更新旧基座原生代码。
内容 完整项目相对路径
uni-app 示例 uni_modules/lizhao-vpn-pro/example/uniapp/index.vue
uni-app x 示例 uni_modules/lizhao-vpn-pro/example/uniappx/index.uvue
公开参数与结果类型 uni_modules/lizhao-vpn-pro/utssdk/interface.uts

示例底部提供完整日志、固定快照分段与手动复制。先“导出诊断”可把实际私有 JSON 纳入报告,读取失败会保留错误;复制不申请权限、不重新连接,也不清日志。插件信息由构建数据校验,HX / 包类型未知时写 unknown;coreBuild 只代表实际 Go/JNI 核心,系统引擎不提供。

选择接入方式与导入

方式 适用情况 操作
先运行完整示例 首次接入、验证三种认证或排查错误 使用上述对应宿主页面,注册后运行
直接调用 API 已有业务表单和自有 IKEv2 服务 复用真实 profile / credentials,先监听后连接

普通 JavaScript 页面只导入 API;带类型的示例用于 uni-app x UTS 或 TypeScript,不能直接把类型注解复制进 JavaScript。

import {
  getVpnCapabilitiesSync,
  validateVpnProfileSync,
  prepareVpn,
  connectVpn,
  disconnectVpn,
  onVpnEvent,
  offVpnEvent
} from '@/uni_modules/lizhao-vpn-pro'

从基础到进阶:按业务模块使用

模块零:从业务配置发起一次连接

以下为 uni-app x UTS 调用函数;普通 JavaScript 页面删除类型导入和注解。把表单或受控接口取得的真实 VpnProfile 传入,先注册监听再连接,退出页面时释放监听;释放监听与断开隧道分别处理。

import {
  getVpnCapabilitiesSync, validateVpnProfileSync, prepareVpn, connectVpn,
  onVpnEvent, offVpnEvent, VpnProfile
} from '@/uni_modules/lizhao-vpn-pro'

const listenerId = onVpnEvent((event) => {
  console.log('VPN状态', event.status.state, event.status.statusConfidence)
})

function startEnterpriseVpn(profile: VpnProfile): void {
  const capability = getVpnCapabilitiesSync()
  const ikev2 = capability.engines.find(item => item.engine === 'ikev2')
  if (ikev2 == null || !ikev2.available) {
    console.log('当前引擎不可用,请核对设备与自定义基座')
    return
  }
  const validation = validateVpnProfileSync(profile)
  if (!validation.valid) { console.log(validation.issues); return }
  prepareVpn({
    success: () => {
      connectVpn({
        profile: profile, timeoutMs: 30000,
        success: result => { console.log('请求已受理', result.state) },
        fail: error => { console.log(error.errCode, error.errMsg, error.nativeCode) },
        complete: () => { console.log('本次连接请求回调结束,后续状态看监听') }
      })
    },
    fail: error => { console.log(error.errCode, error.errMsg) }
  })
}

function disposeVpnPage(): void { offVpnEvent(listenerId) }

系统授权由插件在连接过程中衔接。连接回调的 connecting 只表示请求被接受,界面应以真实状态事件或 waitVpnState 判断连接结果。

模块一:查询能力

先根据真实能力决定是否显示连接按钮:

import { getVpnCapabilitiesSync } from '@/uni_modules/lizhao-vpn-pro'

const capabilities = getVpnCapabilitiesSync()
const ikev2 = capabilities.engines.find(item => item.engine === 'ikev2')

if (ikev2 == null || !ikev2.available) {
  console.log(ikev2?.reason ?? '当前平台不支持企业 VPN')
}

重点字段:

  • platform:android、ios 或当前不支持的平台名。
  • engines[].available:引擎是否真实可用。
  • supportsTrafficStats:系统是否提供当前隧道的独立流量统计。
  • supportsDiagnostics:是否可以导出脱敏诊断文件。

模块二:连接前校验配置

配置值应来自客户运行时表单、安全配置中心或受控业务接口,不要把真实地址和凭据写入源码。

import {
  validateVpnProfileSync,
  VpnProfile
} from '@/uni_modules/lizhao-vpn-pro'

type VpnForm = {
  serverAddress: string
  identity: string
  username: string
  password: string
}

function buildPasswordProfile(form: VpnForm): VpnProfile {
  return {
    id: 'company-ikev2',
    name: '企业内网',
    engine: 'ikev2',
    ikev2: {
      serverAddress: form.serverAddress,
      identity: form.identity,
      authentication: 'password'
    },
    credentials: {
      username: form.username,
      password: form.password
    }
  }
}

// vpnForm 为业务表单实际提供的 VpnForm,不能填入示例账号;取得后调用:
const profile = buildPasswordProfile(vpnForm)
const validation = validateVpnProfileSync(profile)

if (!validation.valid) {
  validation.issues.forEach(item => {
    console.log(`${item.field}: ${item.message}`)
  })
}

预共享密钥认证

前置:业务运行时提供 vpnForm.serverAddress、identity 和 preSharedKey;这是另一种认证配置,不与密码认证同时传。

const profile: VpnProfile = {
  id: 'company-psk',
  name: '企业专网',
  engine: 'ikev2',
  ikev2: {
    serverAddress: vpnForm.serverAddress,
    identity: vpnForm.identity,
    authentication: 'pre-shared-key'
  },
  credentials: {
    preSharedKey: vpnForm.preSharedKey
  }
}

客户端证书认证

前置:业务提供 vpnForm.serverAddress、identity 与已经安全导入的 certificateAlias;不要把私钥放入源码。

const profile: VpnProfile = {
  id: 'company-certificate',
  name: '证书专网',
  engine: 'ikev2',
  ikev2: {
    serverAddress: vpnForm.serverAddress,
    identity: vpnForm.identity,
    authentication: 'certificate',
    certificateAlias: vpnForm.certificateAlias
  }
}

certificateAlias 必须指向已经由宿主应用或系统流程安全导入的客户端证书身份。插件不会从 README 路径、公共目录或网络地址自动读取私钥。

模块三:准备系统权限

import { prepareVpn } from '@/uni_modules/lizhao-vpn-pro'

prepareVpn({
  success(result) {
    if (result.authorized) {
      console.log('系统 VPN 能力已准备')
    } else {
      console.log('首次连接时还需要完成系统授权')
    }
  },
  fail(error) {
    console.log(error.errCode, error.errMsg, error.suggestion)
  },
  complete() {}
})

prepareVpn 负责检查系统能力和当前授权状态。Android 6–10 使用 VpnService.prepare 授权,Android 11+ 的 profile 授权发生在 connectVpn 调用 provisionVpnProfile 时;iOS 的实际权限与配置可用性以保存系统 VPN 配置的结果为准。

模块四:监听状态并连接

先注册监听,再发起连接。页面卸载时必须释放监听。

import {
  connectVpn,
  onVpnEvent,
  offVpnEvent
} from '@/uni_modules/lizhao-vpn-pro'

let vpnListenerId = onVpnEvent(event => {
  console.log('VPN state:', event.status.state)
  if (event.status.lastError != null) {
    console.log(event.status.lastError.errCode, event.status.lastError.errMsg)
  }
})

connectVpn({
  profile,
  timeoutMs: 45000,
  success(result) {
    // connecting 表示系统已接受启动请求,不等于隧道已经建立。
    console.log('连接操作状态:', result.state)
  },
  fail(error) {
    if (error.errCode === 9300003) {
      console.log('请在系统页面完成授权,App 回到前台后重试连接')
      return
    }
    console.log(error.errCode, error.errMsg, error.nativeCode)
  },
  complete() {}
})

function disposeVpnListener() {
  if (vpnListenerId.length > 0) {
    offVpnEvent(vpnListenerId)
    vpnListenerId = ''
  }
}

Android API23–29 需要协商成功、Child SA、系统 TUN 与同代际健康检查全部就绪后才报告 connected;API33 及以上可读取真实 VpnProfileState;Android API 30–32 在系统接受启动请求后只能可靠报告 connecting。iOS 通过系统状态通知更新 connected/reconnecting/disconnecting/disconnected。connectVpn 的 timeoutMs 只限制权限衔接、配置下发和原生启动操作,不把“启动请求已接受”解释成“隧道已经连接”。

等待可信终态

需要在登录、内网资源加载等业务流程中等待真实终态时,使用 waitVpnState,不必在页面自行编写轮询:

import { waitVpnState } from '@/uni_modules/lizhao-vpn-pro'

waitVpnState({
  states: ['connected', 'failed'],
  timeoutMs: 60000,
  success(status) {
    console.log(status.state, status.statusSource, status.statusConfidence)
  },
  fail(error) {
    // 9300019 表示指定时间内没有到达目标状态,不代表插件伪造失败状态。
    console.log(error.errCode, error.suggestion)
  },
  complete() {}
})

statusSource 用于区分系统查询、原生事件、操作推导或平台不可查询;statusConfidence 用于区分确认状态、估计状态和未知状态。Android API 30–32 的 connecting 为 operation/estimated,不能当成真实 connected。

当前系统与用户态 IKEv2 均不提供应用内动态挑战,因此 respondVpnChallenge 当前返回明确不支持错误。该 API 为后续可产生 OTP、短信或口令挑战的扩展引擎保留,不影响现有调用合同。

模块五:状态、断开、日志与诊断

查询当前状态

import { getVpnStatusSync } from '@/uni_modules/lizhao-vpn-pro'

const status = getVpnStatusSync()
console.log(status.state, status.connectedAt)

断开连接

import { disconnectVpn } from '@/uni_modules/lizhao-vpn-pro'

disconnectVpn({
  success(result) {
    console.log('断开操作状态:', result.state)
  },
  fail(error) {
    console.log(error.errCode, error.suggestion)
  },
  complete() {}
})

读取脱敏日志

import { getVpnLogs } from '@/uni_modules/lizhao-vpn-pro'

getVpnLogs({
  limit: 100,
  success(result) {
    result.entries.forEach(entry => {
      console.log(entry.timestamp, entry.level, entry.message)
    })
  },
  fail(error) {
    console.log(error.errCode, error.errMsg)
  },
  complete() {}
})

导出诊断文件

import { exportVpnDiagnostics } from '@/uni_modules/lizhao-vpn-pro'

exportVpnDiagnostics({
  includeLogs: true,
  success(result) {
    console.log('脱敏诊断文件:', result.filePath)
  },
  fail(error) {
    console.log(error.errCode, error.suggestion)
  },
  complete() {}
})

诊断文件只包含平台、状态、引擎可提供的统计字段和有限日志;Android 6–10 还包含 androidNative 中的真实引擎、核心构建标记、线程/队列与错误摘要,不包含完整 profile、credentials、密码、PSK 或私钥。文件位于 App 私有缓存目录,业务方分享或上传前仍应取得用户同意并遵循自身隐私制度。

API 用途速查

API 类型 说明
getVpnCapabilitiesSync 同步 查询平台、引擎、统计和诊断能力
prepareVpn 异步 检查系统能力与当前授权状态
validateVpnProfileSync 同步 在原生调用前校验配置和认证组合
connectVpn 异步 按当前引擎完成授权、配置并请求启动隧道
respondVpnChallenge 异步 扩展引擎认证挑战入口;系统 IKEv2 当前不支持
disconnectVpn 异步 请求系统停止当前隧道
getVpnStatusSync 同步 获取统一 VPN 状态
onVpnEvent 同步 注册持续状态监听,返回监听 ID
offVpnEvent 同步 按监听 ID 释放监听
getVpnTrafficStatsSync 同步 获取当前引擎可提供的会话统计;不可用时能力为 false 且返回零值
getVpnLogs 异步 分页读取进程内脱敏日志
exportVpnDiagnostics 异步 导出 App 私有缓存中的脱敏 JSON
waitVpnState 异步 等待一个或多个目标状态,超时返回明确错误

VpnProfile

参数 类型 必填 说明 默认值 可选参数
id string 是 业务配置 ID,不应包含密码或密钥 - -
name string 是 系统 VPN 配置显示名称 - -
engine VpnEngine 是 当前可用引擎为 ikev2 - ikev2
endpoint string 否 覆盖 IKEv2 服务地址 - 主机名或 IP
ikev2 Ikev2ProfileOptions IKEv2 必填 IKEv2 配置 - -
credentials VpnCredentials 按认证方式 当前连接所需凭据 - -

Ikev2ProfileOptions

参数 类型 必填 说明 默认值 可选参数
serverAddress string 是 IKEv2 服务地址 - 主机名或 IP
identity string 是 客户端身份标识 - 企业分配值
authentication string 是 认证方式 - password、pre-shared-key、certificate
remoteIdentifier string 否 服务端远程标识 服务地址 企业分配值
localIdentifier string 否 客户端本地标识 identity 企业分配值
certificateAlias string 证书认证必填 系统证书身份别名/标签 - -
disconnectOnSleep boolean 否 iOS 休眠时是否断开 false true、false

VpnCredentials

参数 类型 必填 说明 默认值 可选参数
username string 密码认证必填 用户名 - -
password string 密码认证必填 会话密码 - -
preSharedKey string PSK 认证必填 预共享密钥 - -
privateKeyPassword string 否 扩展证书导入流程预留;系统 identity 引用通常不需要 - -

VpnStatus

字段 类型 说明
state VpnState 当前统一状态
engine VpnEngine? 当前引擎
profileId string? 当前业务配置 ID
connectedAt number? 已连接时间戳,系统可确认后提供
challenge VpnChallenge? 扩展引擎认证挑战
lastError VpnErrorInfo? 最近一次错误摘要
sessionId string? 当前连接代次标识,用于隔离迟到事件
sequence number? 当前会话单调递增的状态序号
lastTransitionAt number? 最近一次状态迁移时间戳
statusSource VpnStatusSource? system、native-event、operation 或 unavailable
statusConfidence VpnStatusConfidence? confirmed、estimated 或 unknown

状态全集:idle、preparing、permission-required、ready、connecting、auth-required、connected、reconnecting、disconnecting、disconnected、failed。

错误码说明

错误码 含义 建议处理
9300001 参数无效 检查必填字段和类型
9300002 当前平台不支持 根据 capabilities 隐藏入口
9300003 VPN 权限未授予 完成系统授权后重试
9300004 VPN 配置无效 展示 validation issues
9300005 所选 VPN 引擎不可用 使用当前真实可用引擎
9300006 VPN 连接超时 检查网络和服务端
9300007 需要继续完成认证 按 challenge 类型处理
9300008 VPN 认证失败 核对账号、策略和服务端日志
9300009 证书或密钥无效 检查系统证书身份和有效期
9300010 VPN 配置不存在 重新准备并连接
9300011 VPN 正在连接或已经连接 等待当前操作结束
9300012 VPN 当前未连接 刷新状态后决定是否忽略
9300013 原生 VPN 执行失败 查看 nativeCode 和诊断文件
9300014 事件监听注册失败 释放旧监听后重试
9300015 VPN 日志读取失败 缩小查询范围后重试
9300016 安全凭据存储失败 检查 Keychain/系统凭据权限
9300017 VPN 断开失败 刷新状态后重试
9300018 诊断信息导出失败 检查 App 私有缓存空间
9300019 VPN 操作或状态等待超时 检查系统授权、网络并按当前状态决定是否重试
9300020 存在冲突中的 VPN 操作 等待当前准备、连接或断开操作结束
9300021 HarmonyOS VPN 授权被拒绝 由用户重新发起并确认系统授权
9300022 HarmonyOS VPN 虚拟网卡创建失败 查看 nativeCode 和系统网络状态
9300023 VPN 协议引擎尚未接入或不可用 根据 capabilities 禁用当前协议入口

失败对象还包含 stage、recoverable、nativeCode 和 suggestion。errSubject 固定为 lizhao-vpn-pro。

注意事项

平台支持与限制

平台 IKEv2 认证 状态 诊断 说明
uni-app Android API23–29 已实现,待真实互通验收 EAP-MSCHAPv2、PSK、KeyChain证书 用户态协商/TUN 的真实状态 支持 Android 6–10;ARM64/ARMv7;需源码匹配基座
uni-app Android API33+ 支持 密码、PSK、证书 可读完整系统状态 支持 系统 IKEv2
uni-app Android API 30–32 支持 密码、PSK、证书 启动后可靠状态为 connecting 支持 系统不提供 VpnProfileState 查询
uni-app iOS 支持 密码、PSK、证书 系统状态通知 支持 需要 Personal VPN entitlement
uni-app x Android 同上按 API 分派 密码、PSK、证书 同 Android 支持 最低 API23;需要源码匹配自定义基座
uni-app x iOS 支持 密码、PSK、证书 同 iOS 支持 需要自定义基座
HarmonyOS IKEv2 暂不可用 - 支持授权、Extension/TUN 基础状态 支持脱敏诊断 已建立原生基础架构,真实 IKEv2 引擎尚未接入
Web 不支持 - 返回明确错误 不支持 浏览器不能创建系统 VPN 隧道
微信小程序 不支持 - 返回明确错误 不支持 平台能力限制
支付宝小程序 不支持 - 返回明确错误 不支持 平台能力限制

公共合同中保留 *** 引擎标识,但当前发布内容没有经过双端原生产物、许可证、包体和真实连接 PoC,因此能力查询固定返回不可用。业务代码不得绕过 capabilities 强行调用。

Android API23–29 用户态引擎的 supportsTrafficStats 为 true(前提是对应 ABI 库加载成功);统计来自当前隧道收发并在完整重连间累加,不是全机流量。Android API30+ VpnManager 和 iOS NEVPNManager 都不提供当前系统 IKEv2 会话的独立字节/数据包统计,所以 supportsTrafficStats 为 false,getVpnTrafficStatsSync 返回零值与采样时间,不表示真实流量为零。

权限、隐私与自定义基座

Android

  • 最低 Android 6 / API23。其他插件及宿主运行时若要求更高版本,最终应用最低版本取全部依赖的最大值;当前综合示例含 API26 插件,验证 API23 应使用仅接入本插件的最小宿主,不能只改综合工程声明。
  • API23–29 使用自有 VpnService,数据包在本应用进程的 Go IKEv2/ESP 核心和系统 TUN 间转发,不记录客户数据包正文。当前提供 ARM64/ARMv7;不提供 x86/x86_64 用户态库,缺少匹配库时能力查询返回不可用。
  • Manifest 包含 INTERNET、ACCESS_NETWORK_STATE、FOREGROUND_SERVICE、FOREGROUND_SERVICE_SYSTEM_EXEMPTED,Service 由 BIND_VPN_SERVICE 保护;声明可选 android.software.ipsec_tunnels feature。API26+ 低版本分支保持前台通知,不需要额外存储权限。
  • 用户态分支不从磁盘恢复凭据,不声明 Always-on;撤销、断开和网络变化会关闭旧资源。网络切换采用完整重连,不承诺 MOBIKE 无缝切换。
  • 证书认证使用已授予本应用访问权的 Android KeyChain identity;私钥留在系统,不导出到 Go。服务端证书与身份必须通过平台信任校验;当前公共接口不支持直接传入自定义 CA 文件。
  • 客户网关需支持标准 IKEv2、相应认证和双方共同提案;协议、证书链及三认证互通仍须对客户测试网关验收。
  • API 33+ 使用系统 session key 和 VpnProfileState;系统授权页面由 Android 管理。

iOS

  • 最低部署目标 iOS 12。
  • 使用 NetworkExtension 与 Security Framework。
  • 宿主 App ID、描述文件和签名必须包含 Personal VPN entitlement。
  • 密码和 PSK 写入 kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly Keychain 项,不进入 UserDefaults、日志或诊断文件。

隐私

  • 插件不提供服务器、不收集账号、不上传诊断文件。
  • 原始 profile、credentials、密码、PSK、私钥和 Bearer 内容不进入诊断结构。
  • 日志和诊断分别执行脱敏;业务层仍不得主动打印传入配置。
  • 诊断文件位于 App 私有缓存,何时分享、上传或删除由宿主业务决定。

第三方许可与闭源分发

插件自有代码沿用现有发布方式。用户态核心来源及固定提交见 uni_modules/lizhao-vpn-pro/native/android/UPSTREAM.json;MIT/BSD/Apache 等许可分别保留,少量 MPL2 组件需要随包保留对应源码材料。uni_modules/lizhao-vpn-pro/native/android/THIRD-PARTY-NOTICES.md、uni_modules/lizhao-vpn-pro/native/android/third-party-licenses/ 和 uni_modules/lizhao-vpn-pro/native/android/third-party-sources/ 为分发材料,不能统一改成私有许可或加密后删去第三方源码;此路线未引入 strongSwan GPL 引擎。

自定义基座

插件包含 Android Kotlin/Manifest/JNI 与两套 ARM .so,以及 iOS Swift/entitlement/Privacy Manifest。首次导入或升级这些原生文件后,Android、iOS 都必须使用当前 HBuilderX 重新原生联编,重打并安装对应自定义基座。

若 HBuilderX 仍提示“需 Android 11.0 以上设备运行”,先核对当前选择的自定义基座。旧基座的 Manifest 最低版本仍是 API30,必须用当前源码重打并重新选择新基座;appResource/WGT 不能改变旧 APK 的最低系统版本,也不能给旧基座加入本次 JNI/Go/Service。

Android 6–10 分支目前完成本地离线、资源生成和原生联编验证;没有真实网关、系统授权及设备验收证据,仍属待验收候选。

appResource 编译成功只证明 UTS 与生成入口可生成,不能替代 Android/iOS 原生签名、系统授权和真实 VPN 服务器连接。正式上线前至少验证:首次授权、授权后重试、三种认证、连接失败、断网重连、主动断开、App 前后台、诊断导出和卸载后系统配置行为。

  • 使用本应用获授权的服务器和认证信息,真实配置不写入源码或日志。
  • 连接请求成功不代表隧道已连接;根据真实状态事件与 waitVpnState 决定何时访问内网业务。
  • 释放页面监听与断开隧道是两种操作,由业务分别控制。

作者系列 UTS 插件

以下为作者已发布的 UTS 插件,可按能力方向查找。

插件 能力方向 插件市场
lizhao-alipay-kit 支付宝授权登录、App 支付与脱敏诊断 查看插件
lizhao-app-keepalive 应用保活、唤醒、自愈与报告 查看插件
lizhao-apple-iap 苹果内购、交易恢复、订阅管理与服务端验签参考 查看插件
lizhao-apple-login 苹果授权登录、凭证状态与撤销监听 查看插件
lizhao-bg-audio 背景音频播放、队列、倍速与事件 查看插件
lizhao-ble BLE 扫描、连接、读写、通知与自动重连 查看插件
lizhao-call-kit 电话、短信、通讯录原生能力 查看插件
lizhao-camera-pro 原生相机、拍照录像、水印与媒体保存 查看插件
lizhao-cast-screen DLNA 投屏、AirPlay 路由入口 查看插件
lizhao-choose-file 原生文件选择、上传、进度与取消 查看插件
lizhao-device-id 设备标识、隐私策略与诊断 查看插件
lizhao-dingtalk 钉钉授权登录、内容分享与回执诊断 查看插件
lizhao-doc-corrector 文档扫描、矫正、增强与识别 查看插件
lizhao-douyin-kit 抖音授权登录、内容分享与回执诊断 查看插件
lizhao-emu-detect 模拟器环境检测、风险评分与证据 查看插件
lizhao-float-window 悬浮窗、画中画、权限与诊断 查看插件
lizhao-gallery-pro 相册媒体分页、筛选、缩略图与导出 查看插件
lizhao-google-login Google 授权登录、会话管理与脱敏诊断 查看插件
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-live-photo 实况照片选取、展示预览与原件处理 查看插件
lizhao-map 高德地图、定位、地点搜索、路线规划与导航 查看插件
lizhao-meta Facebook 登录分享、应用事件与深链 查看插件
lizhao-nfc-pro NFC 标签读写、NDEF、IsoDep 与诊断 查看插件
lizhao-notify-pro 本地通知、点击动作、进度与定时提醒 查看插件
lizhao-novel-reader 原生小说阅读、仿真翻页与段落评论 查看插件
lizhao-office-view Office 与 PDF 文件预览、进度与缓存管理 查看插件
lizhao-pdf-pro PDF 阅读、签批、真实写回与页面处理 查看插件
lizhao-play-billing Google Play 商品购买、订阅、恢复与确认消耗 查看插件
lizhao-qq-share QQ 授权码登录、QQ 与 QQ 空间分享 查看插件
lizhao-qrcode 二维码生成、Logo 与样式配置、批量生成及导出 查看插件
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 微信登录、分享、支付、小程序与客服 查看插件
lizhao-wecom 企业微信授权登录、内容分享与脱敏诊断 查看插件
lizhao-xhs-share 小红书图文视频分享与回执诊断 查看插件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android INTERNET、ACCESS_NETWORK_STATE、VpnService、前台服务及系统 IPsec tunnel 能力;iOS NetworkExtension 与 Personal VPN entitlement

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

用户主动提供的企业 VPN 地址、身份、账号、证书引用、连接状态和本地脱敏诊断信息

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。