更新记录
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。
接入与自动安装
- 复制
uni_modules/zyx-local-office到项目同名目录。移除旧local-officeUTS 模块及旧nativeplugins/Local-Office配置,避免同名原生类重复打包。 - Android 选择
arm64-v8a,最低 API 21。使用 HBuilderX 4.25+;本次本地编译验证使用 5.34。 - 重新制作自定义基座或完整 APK。 1.1.0 增加了内置内核、启动钩子,并将插件 ID/包名改为 zyx 前缀;旧 local-office 基座无法通过单独同步 JS/WGT 获得这些变化。
- 插件 AAR 内的
assets/office/arm64-v8a.tbs随应用安装。AppHookProxy.onCreate在应用启动时自动检查并安装,不再要求业务项目放一份 static 内核,也不需要用户点击安装。 - 内核和离线阅读组件都已就绪时,后续启动跳过复制与安装。并发
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。

收藏人数:
购买普通授权版(
试用
使用 HBuilder 导入示例项目
赞赏(0)
下载 28
赞赏 0
下载 12755847
赞赏 1959
赞赏
京公网安备:11010802035340号