微信分包教程
工具:
修改文件目录:
起始:
需要修改的地方有 game.json, game.js, main.js
将 raw-assets 分包为 assets1, assets2,并且压缩配置上标记文件 game.js
修改后:
修改三个文件 game.json, game.js, main.js
game.json (修改 subpackages对象的属性)
{
"deviceOrientation": "portrait",
"networkTimeout": {
"request": 5000,
"connectSocket": 5000,
"uploadFile": 5000,
"downloadFile": 5000
},
"subpackages": [
{
"name": "assets1",
"root": "res/assets1"
},
{
"name": "assets2",
"root": "res/assets2"
}
]
}
game.js (保证在引擎渲染前调用nodejs模块解压文件到微信的文件系统)
var fs = wx.getFileSystemManager();
let packageNum = 2;
let unzip = (path) => {
fs.unzip({
zipFilePath: path,
targetPath: `${wx.env.USER_DATA_PATH}/raw-assets`,
success: (res) => {
console.log('success', res);
packageNum--;
if (packageNum == 0) {
console.log('packageNum', packageNum);
gameBoot();
}
},
fail: (res) => {
console.log(res);
}
});
};
fs.mkdir({
dirPath: `${wx.env.USER_DATA_PATH}/raw-assets`,
success: () => {
wx.loadSubpackage({
name: 'assets1',
success: () => {
unzip("res/assets1/assets1.zip");
}
})
wx.loadSubpackage({
name: 'assets2',
success: () => {
unzip("res/assets2/assets2.zip");
}
})
},
fail: () => {
console.log('fail');
gameBoot();
}
})
function gameBoot() {
require('libs/weapp-adapter/index');
var Parser = require('libs/xmldom/dom-parser');
window.DOMParser = Parser.DOMParser;
require('libs/wx-downloader.js');
require('src/settings');
var settings = window._CCSettings;
require('main');
// Will be replaced with cocos2d-js path in editor
require('cocos/cocos2d-js-min.js');
require('./libs/engine/index.js');
// Adjust devicePixelRatio
cc.view._maxPixelRatio = 3;
wxDownloader.REMOTE_SERVER_ROOT = "";
wxDownloader.SUBCONTEXT_ROOT = "";
var pipeBeforeDownloader = cc.loader.subPackPipe || cc.loader.md5Pipe || cc.loader.assetLoader;
cc.loader.insertPipeAfter(pipeBeforeDownloader, wxDownloader);
if (cc.sys.browserType === cc.sys.BROWSER_TYPE_WECHAT_GAME_SUB) {
var _WECHAT_SUBDOMAIN_DATA = require('src/subdomain.json.js');
cc.game.once(cc.game.EVENT_ENGINE_INITED, function () {
cc.Pipeline.Downloader.