如果您的项目是从1.7.1之前的版本升级到1.7.1及以上版本,本文档对您将很有帮助。
Tuanjie1.7.1将不再支持Default模式导出与和构建项目,Export Project Type选项将不再支持配置,统一使用Use As A Library 模式。
出于引擎安全性考虑,为防止用户错误修改引擎核心代码,将不再对外暴漏引擎内部使用的ets代码,统一以classesLib.har的形式提供使用。
引擎导出类和方法统一声明在tuanjieLib 模块的 exported.ets 文件中,可以在Openharmony export from library 找到对应接口。
在新版本中,由于引入classesLib作为静态共享包使用,用户在导入模块时需要与tuanjieLib进行区分。
entry模块,通过下列方式导入:import { Tuanjie } from 'tuanjieLib'
tuanjieLib模块,通过下列方式导入:import { Tuanjie } from 'classesLib'
POST_MESSAGE_TO_HOST和POST_MESSAGE_TO_WORKER主要用于跨线程的消息传递(Host_UI线程和Work_Tuanjie线程),实现跨线程模块加载和函数调用等功能。本次版本更新中,更改了传递ets文件路径来调用函数的方式,无需再传入相对路径,改为传入ets文件所在模块名称,并在所在模块的exported.ets文件中导出所需的调用类或方法来实现调用。相关文档详情请见:Custom method Call UI thread worker from TypeScript plug-in 。
// in TestClass.etslib
import {POST_MESSAGE_TO_HOST} from 'classesLib'
export class ClassObjectTest {
public PostMsgFunc(callback: (...args: Array<ESObject>) => ESObject) {
const param: Array<ESObject> = []
let msg:ESObject = {
// 原方式为传入路径,现更改为传入模块名称
// modulePath:"./src/main/ets/TestManager.ets"(deprecated)
moduleName: "tuanjieLib",
funcName: "TestManager.Func1",
args: param,
callback: callback,
timeoutMs: -1,
}
POST_MESSAGE_TO_HOST(msg);
}
}
// in ./tuanjieLib/src/main/ets/TestManager.ets
export class TestManager {
static Func1() {
console.log("TestManager Func1 Invoke");
}
}
// in ./tuanjieLib/exported.ets
export { TestManager } from './src/main/ets/TestManager'
若勾选Export Project选项构建导出项目,需使用 DevEco Studio 5.1.0 或更高版本进行二次开发。