背景

从面前的经验看。DevEco Studio 工程和Android Studio 工程的结构是类似的。

在 HarmonyOS 的 Hvigor 构建体系中,每个模块是独立的编译单元。tuanjieLib 和 entry 是两个独立的 Module,各自有自己的 oh-package.json5。

entry 不只是”launcher”,它还承载了 Ability 生命周期,凡是需要在生命周期中直接操作的 SDK,都应该在 entry 中直接引入。

但是如果所有SDK 相关逻辑都写在enrty 中,会比较臃肿。所以推荐在tuanjieLib 中创建SDK 代码的文件夹,封装好SDK 逻辑后,再暴露给entry 的TuanjiePlayerAbility引用。

DevEco Studio 层接入

手动接入har 包

由于SDK 需要在 TuanjiePlayerAbility 生命周期中直接调用,所以直接在 entry 模块中引入 SDK。

步骤:

  1. 在 tuanjieLib/src/main/ets/ 目录下手动创建 GameSdk/ 文件夹(如果没有)。然后在其中创建 YourSDK.ets
  2. 将第三方 SDK 的 .har 包放入 tuanjieLib/libs/
  3. 修改 tuanjieLib/oh-package.json5,添加.har 包依赖:
{
"name": "entry",
"version": "1.0.0",
"description": "Please describe the basic information.",
"main": "",
"author": "",
"license": "",
"dependencies": {
"your-sdk-name": "file:./libs/YourSDK-1.0.0.har"
}
}

修改 tuanjieLib/build-profile.json5,在buildOption.arkOptions.runtimeOnly.packages 中增加har包的名称:

"packages": [
"your-sdk-name"
]
  1. 在 DevEco Studio 中,右键 tuanjieLib 模块 → Open in Terminal,执行:
ohpm install
  1. json5 文件修改完成后,点击同步。

  2. 在tuanjieLib/exported.ets 中,导出自定义的类:

export { YourSDK } from './src/main/ets/GameSdk/YourSDK';
  1. 在entry/src/main/ets/ability/TuanjiePlayerAbility.ets 中,引用并调用SDK:
import { YourSDK } from 'tuanjieLib';

export default class TuanjiePlayerAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
// 调用 SDK 方法
YourSDK.Init(this.context);
}
}

通过OpenHarmony 三方库中心仓依赖

团结引擎与OpenHarmony 层的调用