HarmonyOS 鸿蒙Next hvigor自定义插件不写在同级目录就无法正常运行
HarmonyOS 鸿蒙Next hvigor自定义插件不写在同级目录就无法正常运行
问题:我直接在hvigorfile.ts中引用Plugin目录里面的插件,hvigor.nodesEvaluated中的console不执行。
目录结构是这样的:
-Project
–Entry
—hvigorfile.ts
–Plugin
—src
----CustomePlugin.ts
hvigorfile.ts
import { hspTasks } from ‘@ohos/hvigor-ohos-plugin’;
import { CustomePlugin } from ‘…/…/Plugin/src/CustomePlugin’;
export default {
system: hspTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
plugins:[CustomePlugin()] /* Custom plugin to extend the functionality of Hvigor. */
}
CustomerPlugin中console.log(‘nodesEvaluated’)就执行不到,但是如果把CustomerPlugin.ts放在与Entry/hvigorfile.ts同级目录引用就能执行,或者把hvigor从hvigorfile.ts传到CumstomePlugin(hvigor)中就能执行,请问是不是就应该这样或者是我的使用方式不对?
CustomerPlugin.ts
import { hvigor, HvigorNode, HvigorPlugin } from ‘@ohos/hvigor’;
import { OhosHapContext, OhosPluginId, Target } from ‘@ohos/hvigor-ohos-plugin’;
export function CustomPlugin(): HvigorPlugin {
return {
pluginId: ‘NlRouterAppPlugin’,
apply: async (node: HvigorNode) => {
console.log(‘hello NlRouterAppPlugin!’);
hvigor.nodesEvaluated(() => {
console.log(‘nodesEvaluated’);
hapTask(node);
})
}
}
}
function hapTask(currentNode: HvigorNode) {
// 等待全部节点加载完成之后获取子节点信息
console.log(‘hapTask:’);
hvigor.getRootNode().subNodes((node: HvigorNode) => {
// 获取hap模块上下文信息
const hapContext = node.getContext(OhosPluginId.OHOS_HAP_PLUGIN) as OhosHapContext;
const moduleName = hapContext?.getModuleName();
console.log(‘subNodes:’, hapContext?.getOhpmDependencyInfo());
hapContext?.targets((target: Target) => {
const targetName = target.getTargetName();
console.log(‘targetName:’,targetName);
const outputPath = target.getBuildTargetOutputPath();
// 禁用任务
node.getTaskByName(${target.getTargetName()}@SignHap
)?.setEnable(false);
node.registerTask({
// 任务名称
name: ${targetName}@onlineSignHap
,
// 任务执行逻辑主体函数
run() {
console.log(‘module Task’);
},
// 配置前置任务依赖
dependencies: [${targetName}@PackageHap
],
// 配置任务的后置任务依赖
postDependencies: [‘assembleHap’]
});
});
});
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
}
更多关于HarmonyOS 鸿蒙Next hvigor自定义插件不写在同级目录就无法正常运行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
关于代码插桩,目前arkts只提供了AOP功能,可以参考文档:https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-application-aspect-programming-design-V5#section7148435113516
更多关于HarmonyOS 鸿蒙Next hvigor自定义插件不写在同级目录就无法正常运行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next hvigor系统中,自定义插件的运行依赖于系统对文件路径的解析和加载机制。如果插件不放在同级目录下就无法正常运行,这通常是因为系统的插件加载逻辑被设定为在同级目录或特定路径下查找所需资源。
鸿蒙系统的插件管理机制可能要求插件文件(包括配置文件、二进制文件等)需位于指定的相对路径或绝对路径下,以确保插件能够正确加载和初始化。当插件位于预期之外的目录时,系统可能无法正确识别或访问这些文件,从而导致插件无法正常运行。
为了解决这个问题,你可以尝试以下方法:
-
确保插件文件被放置在系统预期的目录下,通常是与主程序同级的目录或系统指定的特定目录。
-
检查鸿蒙系统的文档或开发者指南,了解有关插件放置位置的具体要求。
-
如果系统支持,可以通过配置文件或代码中的路径设置来指定插件的加载路径。
-
确保插件的所有依赖项和必要资源都已正确放置,并且路径设置无误。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。