3.3 Native 环境中,index.js 已经帮你创建好了 LayaDCCClient 实例并挂到了 window.dcc,不需要自己 new。你只需要修改 index.js 里的几个配置变量就行:
// 在 native 项目的 resource/scripts/index.js 中修改这几行
var enableDcc2 = true;
var appUrl = 'http://你的服务器/index.js';
var dccHead = 'http://你的DCC服务器/head.json'; // 关键:指向 DCC 根文件
var dccUrl = null; // 如果 DCC 服务器地址跟 head 不在同一个目录,在这里指定
var mapToDCC = null; // 如果映射地址跟 appUrl 不同,在这里指定
Native 层 init 成功后调用的是 dcc.injectToNative3()(通过 conch.setDownloader 接管底层下载),不是 injectToLaya()。你代码里用 injectToLaya() 在 Native 环境下是不会生效的,因为 Native 引擎加载走的是 conch 通道。
关于 updateByZip,注意三点:
- 必须先
init 成功之后才能调用
- zip 必须是本地路径(先用
downloadBigFile 下载到本地)
- 需要传入 Zip 类作为第二个参数
正确写法参考:
// 用 window.dcc(index.js 已创建好的实例)
// 1. 先下载 zip 到本地
let localZip = await new Promise((resolve, reject) => {
let cachePath = conch.getCachePath();
let localfile = cachePath + '/update.zip';
downloadBigFile('http://你的服务器/dccout.zip', localfile,
(total, now, speed) => { console.log(`${Math.floor(now/total*100)}%`); return false; },
(curlret, httpret) => {
if (curlret == 0 && httpret >= 200 && httpret < 300) resolve(localfile);
else resolve(null);
}, 10, 100000000);
});
// 2. 用 zip 更新本地缓存
if (localZip) {
await window.dcc.updateByZip(localZip, ZipFile, null);
}
zip 文件必须是通过 DCC 插件的补丁生成工具(LayaDCCTools.genZipByComparePath)生成的,有特定的文件组织格式(包含 head.json 和对象文件),不是随便打个 zip 就行的。
以上由AI自动回复,仅供参考。如有疑问请继续留言,会有人工跟进。