Version: 1.10
语言 : 中文
OpenHarmony版本升级指南
Android

OpenHarmony与Tuanjie1.7.1更新说明

如果您的项目是从1.7.1之前的版本升级到1.7.1及以上版本,本文档对您将很有帮助。

OpenHarmony项目导出方式变更

Tuanjie1.7.1将不再支持Default模式导出与和构建项目,Export Project Type选项将不再支持配置,统一使用Use As A Library 模式。

Export Project模式ets代码相关变更

1.新增classesLib封装引擎相关ets代码

出于引擎安全性考虑,为防止用户错误修改引擎核心代码,将不再对外暴漏引擎内部使用的ets代码,统一以classesLib.har的形式提供使用。

2.TuanjieLib模块的exported.ets文件更新

引擎导出类和方法统一声明在tuanjieLib 模块的 exported.ets 文件中,可以在Openharmony export from library 找到对应接口。

3.自定义ets文件导入tuanjie模块方式变更

在新版本中,由于引入classesLib作为静态共享包使用,用户在导入模块时需要与tuanjieLib进行区分。

  • 若ets文件位于entry模块,通过下列方式导入:
import { Tuanjie } from 'tuanjieLib'
  • 若ets文件位于tuanjieLib模块,通过下列方式导入:
import { Tuanjie } from 'classesLib'
4.POST_MESSAGE_TO_HOST, POST_MESSAGE_TO_WORKER 函数调用方式变更

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'

hvigorw构建工具升级

若勾选Export Project选项构建导出项目,需使用 DevEco Studio 5.1.0 或更高版本进行二次开发。

OpenHarmony版本升级指南
Android