3.8.3和3.8.4测试通过了
export const onBeforeBuild: BuildHook.onBeforeBuild = async function (options: ITaskOptions, result: IBuildResult) {
CUR_DIR_NAME = 指定native下原生工程目录名;
if (HACK_FALG) {
return;
}
HACK_FALG = true;
let modulePath = path.join(path.dirname(Editor.App.path), “/resources/3d/engine/scripts/native-pack-tool”);
let module = require(modulePath);
if (!module) {
throw new Error(查找不到 native-pack-tool模块,path:${modulePath});
}
let poolMap = module.nativePackToolMg.PackToolMap;
const HackList = ['android', 'ios'];
for (let i = 0, len = HackList.length; i < len; i++) {
let obj = HackList[i];
let classInts = poolMap[obj];
let old = classInts.init;
let newInit = function (...args) {
args[0].platformName = CUR_DIR_NAME;
old.apply(classInts, args);
};
classInts.init = newInit;
}
};
找一个构建流程插件的hook文件替换就行。ps:记得修改参数CUR_DIR_NAME;
具体源码可以看native-pack-tool。 所有的平台都是通过这个打包模块构建,里面有构建需要的参数。
这方法就是强制复写platformName这个参数。来制定native/android/** 这个andorid目录名