更新记录

1.1.0(2026-11-10)

无


平台兼容性

uni-app(5.0)

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

uni-app x(5.0)

Chrome Safari Android Android插件版本 iOS 鸿蒙 微信小程序
× × 8.0 1.1.0 × × ×

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
× × √ √

zyx-local-office:离线 Office / PDF 预览

Android UTS 插件,版本 1.1.0。使用 UTS API、Kotlin 混编和独立原生阅读核心。PDF 使用 Android PdfRenderer;Office 使用固定的历史 TBS SDK 44216 和内核 46239。

接入与自动安装

  1. 复制 uni_modules/zyx-local-office 到项目同名目录。移除旧 local-office UTS 模块及旧 nativeplugins/Local-Office 配置,避免同名原生类重复打包。
  2. Android 选择 arm64-v8a,最低 API 21。使用 HBuilderX 4.25+;本次本地编译验证使用 5.34。
  3. 重新制作自定义基座或完整 APK。 1.1.0 增加了内置内核、启动钩子,并将插件 ID/包名改为 zyx 前缀;旧 local-office 基座无法通过单独同步 JS/WGT 获得这些变化。
  4. 插件 AAR 内的 assets/office/arm64-v8a.tbs 随应用安装。AppHookProxy.onCreate 在应用启动时自动检查并安装,不再要求业务项目放一份 static 内核,也不需要用户点击安装。
  5. 内核和离线阅读组件都已就绪时,后续启动跳过复制与安装。并发 initialize 请求合并到同一次安装;失败不会写入成功标记,下次启动或手动重试可恢复。安装结束会删除缓存中的内核暂存副本。
// 普通 uni-app 的 Vue/JS 中使用 APP-PLUS;Android 在运行时判断。
// #ifdef APP-PLUS
import { initialize, openFile, checkTbs, isLoadTbs, shareToFile } from '@/uni_modules/zyx-local-office'

if (plus.os.name === 'Android') {
  // 可选:等待自动初始化并显示结果;无需传内核路径。
  initialize(result => console.log(result.code, result.msg))

  const path = plus.io.convertLocalFileSystemURL('_www/static/1.pdf')
  openFile({ filename: path, isShowBackIcon: true, pdfBgColor: '#edf0f4' }, result => {
    console.log(result.code, result.msg)
  })
  checkTbs(status => console.log(status))
}
// #endif

普通 uni-app 的 Vue/JS 不应使用 APP-ANDROID 判断 Android,否则 App 编译时会删掉对应分支。官方条件编译说明。uni-app x 使用相同 API 时传应用准备好的本地绝对路径,不要使用普通 uni-app 的 plus.io。

API

方法 参数 结果
initialize callback 等待/重试内置内核初始化,完成后返回 { code, msg } 一次,已就绪时 code=0
installLocalTbs { tbsFilePath, isdelete? }, callback 保留显式路径安装入口;已安装返回 -4
isLoadTbs 无 同步 boolean,包含已安装/待生效状态
checkTbs callback { code, msg, installed, sdkVersion, coreVersion, pendingCoreVersion }
openFile { filename, isShowBackIcon?, pdfBgColor? }, callback PDF 直接打开;Office 等待内置内核初始化,再返回阅读就绪/失败一次
shareToFile { filename, title?, fileType? }, callback 系统分享面板是否打开,不代表发送完成
restartApp 无 安排重启并退出当前进程;设备系统可能限制自动重新拉起
  • openFile 回调表示阅读器就绪,不是页面关闭通知;后续关闭不重复回调。
  • UTS 安装回调只返回最终结果,内部 code=1 进度不消费 JS 的单次回调;不使用长期存活回调。
  • installed 不等于每份文档都能打开。文档类型沿用 doc/docx、ppt/pptx、xls/xlsx、txt、epub、pdf,已验证范围见 VALIDATION.md。
  • 文件路径接受真实本地绝对路径和 file://,不直接接收 URL、content:// 或相对路径。正式包中的静态文档若位于 Android assets,应由调用方先复制到应用本地目录;内置 TBS 资源的复制由插件负责。
  • 内置历史内核仅验证 arm64,SHA-256:ae02d2ca2d04cc1c9b12edf9a9d7a29f21191d1a280d04e8a4bcc5edc5fa48a2。安装仍执行版本、架构与哈希校验,没有在线内核下载或新收费 SDK 切换。
  • 首次安装后若设备上的历史 TBS 不能立即加载,退出重启应用后重试;插件不会强制重启应用。
  • 当前仅实现 Android。原生鸿蒙、iOS、Web、小程序未实现。

嵌入组件与源码

nvue 使用 <zyx-local-office-view>,为组件设置明确宽高,属性使用 :filePath、:pdfBgColor。详见 组件说明.md 与仓库 examples/uni-app-uts/pages/index/embedded.nvue。

  • utssdk/app-android/index.uts:API 与 Application 启动钩子。
  • OfficeBridge.kt:UTS/Kotlin/Java 回调适配。
  • libs/office-core.aar:原生阅读核心、TBS SDK、内核与阅读资源,不含 DCloud 宿主运行库。
  • 仓库 UniPlugin-Hello-AS/office_core:复用原生源码,排除旧 UniModule/UniComponent。
  • BundledCore.java:内置资源提取、并发请求合并及重复启动跳过。
# 在仓库根目录执行,使用支持当前 Gradle/AGP 的 JDK(本次为 JDK 18)
cd UniPlugin-Hello-AS
./gradlew :office_core:assembleRelease :office_core:testDebugUnitTest
cd ..
python3 scripts/package-office-uts.py
node scripts/compile-office-uts.cjs
cd UniPlugin-Hello-AS
./gradlew :office_uts_validation:compileDebugKotlin :office_core:lintRelease

HBUILDERX_ROOT 可指定本机 HBuilderX 根目录。包脚本核对 AAR 新鲜度、内置内核哈希、阅读资源及旧桥接类排除。第三方许可见 TENCENT-LICENSE.txt。

隐私、权限声明

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

网络状态;本地文件读取限宿主可访问路径

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

不采集数据

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

无