HarmonyOS鸿蒙Next中将已有的Arkts项目转为Cangjie混合开发工程

HarmonyOS鸿蒙Next中将已有的Arkts项目转为Cangjie混合开发工程 本来没想写这一篇博客的,但我这天突然心血来潮,跟着华子的文档走了一遍,发现根本跑不通,于是决定写一篇博客记录一下我的经历,让大家少走点弯路。在本文中,我将详细介绍如何将已有的Arkts项目转为Cangjie混合开发工程,包括准备工作、配置步骤和常见问题解决方法。

获取鸿蒙Cangjie开发插件

撰写本文时,HarmonyOS NEXT仓颉语言开发者预览版Beta招募仍在进行中,其报名周期为:2024年6月21日-2025年3月30日,后续报名开放情况需关注华为官方消息。你可以点击这里查看当前是否在招募中,如果正在招募,点击“立即报名”即可开始报名。

在报名成功,并获取到预览版资格后,即可前往下载中心下载DevEco Studio-Cangjie Plugin。对于macOS用户,如果你的浏览器在你下载完后直接自动给你解压了这个压缩包,你可能需要手动把它给压缩回去,否则DevEco Studio无法识别此插件,进而无法安装。压缩好后打开DevEco Studio,在插件页面点击从磁盘安装插件,并选择你的插件压缩包,即可安装成功。

添加仓颉混合库

在DevEco Studio中,右击你的项目根文件夹,选择新建-模块,再选择[Cangjie]Hybrid Static Library

注意,我们的目标是混合开发,必须选择Hybrid,否则无法成功引用此库

编写Cangjie侧代码

为了更便捷地从ArkTS侧调用Cangjie函数,并降低仓颉侧的代码编写难度,我们需要导入互操作库。你可以通过以下代码引入它:

import ohos.ark_interop.*
import ohos.ark_interop_macro.Interop

随后,我们就可以开始编写一个简单的函数

@Interop[ArcTS]
public func hello_cangjie(name: String): String {
    "Hello, ${name}!"
}

完整的代码长这样

package ohos_app_cangjie_libxxx // libxxx应该为你自己的库名,在对照的时候无需参考

internal import cj_res_libxxx.app
import ohos.ark_interop_macro.Interop
import ohos.ark_interop

@Interop[ArcTS]
public func hello_cangjie(a:String):String{
    "Hello ${a}"
}

生成声明文件

编写完后,我们需要在工程目录下右击刚才创建的Cangjie Hybrid Static模块,选择Generate Cangjie-ArkTS Interop API,并等待执行完成。

完成后,cangjie目录下会多一个ark_interop_api文件夹,里面就是我们需要的声明文件

// ark_interop_api.d.ts
export declare interface CustomLib {
    hello_cangjie(a: string): string
}

导出仓颉库

ets目录下新建一个loader.ets,并添加以下代码

import { requireCJLib } from "libark_interop_loader.so";
import { CustomLib } from "../cangjie/ark_interop_api";

let libInstance: CustomLib | undefined = undefined;

export function CJNative(): CustomLib {
  if (libInstance == undefined) {
    libInstance = requireCJLib('libohos_app_cangjie_libxxx.so') as CustomLib;
  }
  return libInstance;
}

这个文件中的CJNative函数提供了加载仓颉库的能力,用于在ArkTS侧调用仓颉函数。在ArkTS侧,你可以通过CJNative()函数获取到仓颉库的实例,然后调用其中的函数。

// 你的ArkTS文件
CJNative().hello_cangjie('World')

最后

至此,混合开发工程已经建立,接下来只需要将你创建的库引入到你需要的模块即可。

{
  "name": "entry",
  "version": "1.0.0",
  "description": "Please describe the basic information.",
  "main": "",
  "author": "",
  "license": "",
  "dependencies": {
    "libxxx": "file:../libxxx"
  }
}

调用代码如下:

promptAction.showToast({ message: CJNative().hello_cangjie("Cangjie") });

更多关于HarmonyOS鸿蒙Next中将已有的Arkts项目转为Cangjie混合开发工程的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,将已有的ArkTS项目转为Cangjie混合开发工程,首先需要了解ArkTS和Cangjie的基本概念。ArkTS是鸿蒙系统的一种开发语言,基于TypeScript,主要用于开发应用界面和逻辑。Cangjie是鸿蒙系统的一种混合开发框架,支持多种开发语言和技术的集成,包括ArkTS、C/C++等。

要将ArkTS项目转为Cangjie混合开发工程,可以按照以下步骤进行:

  1. 创建Cangjie工程:在DevEco Studio中,选择“File” -> “New” -> “Project”,然后选择“Cangjie”作为工程类型,填写工程名称和路径,点击“Finish”创建工程。

  2. 导入ArkTS代码:将原有的ArkTS代码复制到Cangjie工程的src/main/ets目录下。确保代码结构保持完整,特别是entry目录下的入口文件。

  3. 配置工程依赖:在build.gradle文件中,添加必要的依赖项,如ArkTS运行时库、Cangjie框架库等。确保所有依赖项版本兼容。

  4. 修改入口文件:在Cangjie工程中,入口文件通常是src/main/ets/MainAbility.ts。根据Cangjie框架的要求,修改入口文件的代码,确保应用能够正确启动。

  5. 编译和运行:完成上述步骤后,使用DevEco Studio的编译和运行功能,构建并运行Cangjie混合开发工程。检查应用是否正常运行,界面和逻辑是否符合预期。

  6. 调试和优化:在运行过程中,使用DevEco Studio的调试工具,检查应用性能,优化代码,确保应用在Cangjie框架下稳定运行。

通过以上步骤,可以将已有的ArkTS项目成功转为Cangjie混合开发工程,充分利用Cangjie框架的优势,提升应用开发效率和性能。

更多关于HarmonyOS鸿蒙Next中将已有的Arkts项目转为Cangjie混合开发工程的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


要将已有的ArkTS项目转为Cangjie混合开发工程,首先确保你的开发环境已安装最新版本的DevEco Studio。然后,在项目中创建Cangjie模块,通过File > New > Module选择Cangjie模板。接着,将ArkTS代码逐步迁移到Cangjie模块中,利用Cangjie的API进行功能实现。最后,配置build.gradle文件,确保ArkTS和Cangjie模块的依赖关系正确。完成迁移后,进行测试以确保功能正常。

回到顶部