为了兼容安卓帧率问题,转而采用此方案,文档被删除,文档被删除,文档被删除,通过报错信息和朋友得知使用方法
初始化:<开发者工具限定1.0.5及其以上>
WXWebAssembly.instantiate(obsoluteWasmFilePath,importObject)
微信初始化胶水代码算法文件方式:
WebAssembly:可以加载本地文件,微信8.0.2起WebAssembly对象被删除
WebAssembly.compile() // 已废弃,文档也已删除,先compile加载wasm文件,再instantiate实例化,其instantiate与WXWebAssembly.instantiate完全不同,传入的是一个arraybuffer对象
WXWebAssembly:没有compile方法,初始化仅支持加载代码包内的wasm绝对路径文件,如/pages/index/index.wasm;
WXWebAssembly.instantiate(obsoluteWasmFilePathath,importObject)
// obsoluteWasmFilePathath为非wxfile://和http开头且以.wasm结尾的绝对路径文件
// importObject为wasm算法模型文件中初始化引入的方法
wasm模型文件:
其中包括算法部分和模型部分<人脸检测,生物检测等等等等>,以及渲染素材,比如眉毛,腮红眼影等
可分拆为单独的data模型文件部分:人脸检测模型,渲染素材
鉴于人脸算法模型文件很容易就超出2M了,可做如下拆分:
Wasm文件可以缩减为仅包含核心算法库和渲染库部分,模型文件抽离成model.data文件,通过WXWebAssembly.instantiate实例化之后导入的方法远程加载模型
模型文件在tensflowjs内包含,model.json和model.bin文件,json文件加载bin文件,c++也是类似机制,一个完整的单独wasm文件包含了从c或者c++转译来的
微信文件系统分为:
代码包文件:仅支持绝对路径读取,且不允许动态增删改,如:/pages/index/index.wasm;
本地文件:通过网络方式下载的文件或缓存文件,其文件路径以wxfile://或http开头,且不允许硬编码为绝对路径,通过wx.env.USER_DATA_PATH也无法编译成绝对路径
本地文件的文件路径均为以下格式:
{{协议名}}://文件路径
其中,协议名在 iOS/Android 客户端为 "wxfile",在开发者工具上为 "http",开发者无需关注这个差异,也不应在代码中去硬编码完整文件路径。
相关阅读:微信小程序文件系统说明文档
以上是使用胶水代码小程序初始化过程中遇到相对棘手问题,分享出来,希望在文档出来前对大家有所帮助,持续更新,欢迎留言
编译了一个wasm 带上胶水js在普通网页上运行,是没问题的。但是放到小程序里面,就报错了。可以分享一下 怎么改造胶水js的吗?
看了这篇少踩坑。