年底重磅惊喜!仓颉在鸿蒙 PC 上成功原生运行
华为仓颉编程语言Nightly Builds版本正式发布,支持鸿蒙PC原生开发。作为华为专为鸿蒙生态打造的新一代编程语言,仓颉具有智能化、全场景、高性能和强安全等核心特性。文章详细介绍了在鸿蒙PC上安装仓颉编译器的完整流程,包括环境配置、签名工具提取、SDK安装等步骤,并演示了如何在鸿蒙PC上搭建仓颉SDK原生开发环境,并编译运行Hello World程序。仓颉语言的开源策略和多范式支持,为鸿蒙生
先上展示
零、年末重磅发布!仓颉编程语言 Nightly Builds 版本已上线
2025年12月26日,仓颉编程语言官方公众号发布文章
《重磅发布!仓颉编程语言 Nightly Builds 版本已上线》
当我们好奇的点开阅读原文后,我们惊喜的发现在仓颉开源在AtomGit(GitCode)的nightly_build仓库release的制品中,出现了 cangjie-xxx-ohos-aarch64的下载链接。这让我们诞生了在鸿蒙PC上试一试的念头!
https://gitcode.com/Cangjie/nightly_build/releases

当然这里我们先回顾一下鸿蒙和仓颉相关的内容~
如果您想直接上手编程,可以选择跳过这一部分。
一、引言:开启鸿蒙 PC 开发新纪元
仓颉编程语言作为华为为鸿蒙生态系统打造的新一代编程语言,正通过其核心特性推动鸿蒙PC开发进入新阶段。该语言聚焦智能化、全场景、高性能和强安全,旨在为跨设备应用开发提供高效解决方案。
1.1 仓颉语言的诞生
仓颉[jié],是华为自研的一款面向全场景智能的新一代编程语言,是华为为鸿蒙量身打造的全场景智能应用编程语言,作为鸿蒙生态中的重要组成部分,旨在支持鸿蒙系统下的全场景应用开发,主打“原生智能化、天生全场景、高性能,强安全。
2019年,华为启动仓颉编程语言项目。2020年8月,华为已经注册仓颉语言商标。2021年2月,华为申请仓颉语言设计研究类商标。2022年3月21日,华为技术有限公司申请注册的网站服务类“仓颉语言”商标获批。2024年6月21日,在华为开发者大会2024前,仓颉编程语言正式亮相,仓颉官网现已上线;10月30日,官网公开上线,首个公测版本开放下载,上线了首页、在线体验、文档、学习、下载、动态以及三方库共六个模块。2025年7月30日,仓颉编程语言开源。
我们可以从仓颉官网中看到相关信息 https://cangjie-lang.cn/

仓颉是一门多范式编程语言,支持函数式、命令式和面向对象等多种范式,包括值类型、类和接口、泛型、代数数据类型、模式匹配、以及高阶函数等特性。支持类型推断,能够降低开发者类型标注的负担;通过一系列简明高效的语法,能够减少冗余书写、提升开发效率;语言内置的各种语法糖和宏(macro)的能力,支持开发者基于仓颉快速开发领域专用语言(DSL)构建领域抽象。

仓颉语言的核心优势体现在多个方面: 在智能化方面,它内嵌AgentDSL框架,支持自然语言与编程语言融合,简化多Agent协同开发;全场景能力上,其轻量化运行时和模块化设计确保在资源受限的PC环境中高效运行,并通过元编程技术实现声明式开发;性能方面,全并发垃圾回收和用户态线程模型显著提升并发处理效率,减少线程开销;安全特性则通过静态类型系统和自动内存管理降低安全漏洞风险。
2.2 仓颉语言的应用场景
在PC开发场景中,仓颉语言展现出显著潜力: 其跨平台特性允许一次编码部署于多种鸿蒙设备,降低开发成本;分布式能力支持跨设备调用与协同,适用于多屏互动或边缘计算场景;同时,开源策略(于2025年7月30日开源)和工具链完善将进一步增强生态兼容性。

附、与主流语言的对比
|
语言 |
执行模式 |
内存管理 |
性能优化技术 |
安全机制 |
跨平台能力 |
|
仓颉 |
AOT编译 + 可选JIT |
全并发GC + 边界检查 |
轻量级线程(用户态协程)、向量化指令优化、内存屏障消除 |
编译时空安全 + 形式化验证 |
全场景(HarmonyOS/Windows/Linux/macOS) |
|
Python |
解释执行 |
引用计数 + 分代GCC |
扩展加速(如NumPy) |
依赖第三方工具 |
全平台 |
|
Java |
JVM字节码解释/编译 |
分代GC(G1/ZGC等) |
JIT热点代码优化 |
基础类型检查 |
JVM支持平台 |
|
C++ |
原生编译 |
手动管理 / 智能指针 |
零成本抽象、SIMD指令优化 |
手动控制 |
依赖编译器 |
|
Go |
编译为机器码 |
分代GC(三色标记法) |
Goroutine轻量级线程、栈动态扩容 |
逃逸分析 |
全平台交叉编译 |
在鸿蒙应用开发中,与ArkTS相比,仓颉语言在性能与安全上更具优势: ArkTS作为动态类型语言侧重开发效率,而仓颉的静态类型系统和编译优化更适合对资源敏感的PC应用;两者通过互操作库协同,形成互补生态。
仓颉语言的演进策略聚焦于提升开发者体验: 未来将强化智能化功能(如AI辅助编程)和跨平台支持,并通过社区资源与文档完善降低学习门槛,为鸿蒙PC生态注入持续动力。
那介绍了这么多好处,我们如何使用鸿蒙 PC(以 MateBook Pro 为例)去原生开发仓颉应用呢?
就让我们一起进入本篇文章的重点分享,详细拆解仓颉在鸿蒙 PC 上的原生安装与运行实现过程。
二、详细拆解仓颉在鸿蒙 PC 上的原生安装与运行实现过程
2.1 准备工作
- 在鸿蒙PC上使用应用商店安装 CodeArts IDE


- 从AtomGit的开源仓中下载仓颉编译器每日构建 nightly_build 版本 SDK:

- 在鸿蒙 PC 的隐私与安全中,开启“运行外部来源的扩展程序”

2.2 从 CodeArts IDE 提取签名工具
打开IDE创建一个项目并打开


在终端里依次执行如下指令
# 复制签名工具
cp /data/app/toolchains.org/toolchains_1.0/lib//binary-sign-tool .
# 对签名工具签名
binary-sign-tool sign -inFile "./binary-sign-tool" -outFile "./binary-sign-tool-signed" -selfSign 1
# 添加可执行权限
chmod +x binary-sign-tool-signed
# 测试,如果没弹授权弹窗和帮忙输出,需要重新签名和添加可执行权限
./binary-sign-tool-signed
# 复制到用户安装目录
mkdir -p ~/.local/bin
cp ./binary-sign-tool-signed ~/.local/bin/binary-sign-tool
# 复制签名工具

# 对签名工具签名

# 添加可执行权限

# 测试,如果没弹授权弹窗和帮忙输出,需要重新签名和添加可执行权限

# 复制到用户安装目录

# 复制到用户安装目录

# 验证签名工具是否成功复制到用户安装目录

2.3 配置环境变量
在 ~/.zshrc 文件中添加
vim ~/.zshrc 按下键盘 i 切换到输入模式,再复制粘贴如下代码
export PATH=$HOME/.local/bin:$PATH


三、安装仓颉编译器
3.1 放置已下载的仓颉SDK到个人目录
把下载的仓颉编译器复制到个人目录(文件管器和下载目录同级)


- 打开终端解压
tar -xzf cangjie-sdk-ohos-aarch64-1.1.0-alpha.2025xxxxxxxxxxxxx.tar.gz换自己下载的版本
tar -xzf cangjie-sdk-ohos-aarch64-1.1.0-alpha.20251227020001.tar.gz

过程中会提示 tar: settime 1753890084 xxxx Permission denied
这个错误的核心原因是,tar 命令在解压文件时,不仅会创建文件和目录,还会尝试将文件的原始时间戳(包括访问时间和修改时间)也一并恢复。当它尝试设置这些时间戳时,由于当前用户权限不足,导致操作失败。
可以在解压过程中 忽略时间戳
这是最简单且最直接的解决方案。使用 tar 的 --touch 选项,它会告诉 tar 在解压后不尝试恢复原始时间戳,而是使用当前时间作为文件的修改时间。这样就完全绕过了 settime 操作,从而避免了权限错误。
请执行以下命令:
tar -xzf cangjie-sdk-ohos-aarch64-1.1.0-alpha.20251227020001.tar.gz --touch
命令解释:
-x: 解压 (extract)-z: 处理.gz压缩文件-f: 指定文件名 (file)--touch: 在解压后,使用当前时间更新文件的修改时间,而不是尝试恢复归档中的原始时间戳。
对于绝大多数开发和使用场景来说,文件的原始时间戳并不重要,这个方案是最佳选择。

这时候就不报解压时间戳的问题了~
3.2 配置相关环境变量的脚本文件
- 打开 /storage/Users/currentUser 目录中的
cangjie/envsetup.sh文件,把首行的#!/bin/bash换成#!/bin/sh
cd /storage/Users/currentUser/cangjie
vim envsetup.sh


把首行的 #!/bin/bash 换成 #!/bin/sh

在 cangjie目录下和 envsetup.sh 同级,创建 sign-cangjie.sh 文件
touch sign-cangjie.sh
vim sign-cangjie.sh
把以下脚本保存为 sign-cangjie.sh
#!/bin/sh
# 递归查询当前目录及其子目录下的所有文件
find . -type f | while read -r file; do
# 使用 file 命令检查文件类型
if file "$file" | grep "shared object"; then
echo "Found executable or shared object: $file"
# 确保文件具有可执行权限
chmod +x "$file"
# 签名文件
echo "Signing file: $file"
binary-sign-tool sign -inFile "$file" -outFile "$file" -selfSign 1
fi
done


-
在终端切换到
cangjie目录下,执行chmod +x sign-cangjie.sh并执行./sign-cangjie.sh
chmod +x sign-cangjie.sh
./sign-cangjie.sh

提示是否运行,请选择运行
它会自动遍历签名cangjie目录里的文件

- 切换到
third_party/llvm/bin目录,并执行rm ld.lld && cp lld ld.lld
cd third_party/llvm/bin
rm ld.lld && cp lld ld.lld

恭喜! 到这里这样我们的仓颉编译器就安装好了!
四、使用仓颉编译器
现在就可以按仓颉教程的方法使用仓颉了
-
打开终端 切换到安装仓颉SDK的文件夹,并执行
source envsetup.sh-
cd ~/cangjie source envsetup.sh
- 然后就可以在当前终端窗口执行
cjc -v
-

点击运行

五、编译并执行项目
-
写一个
hello_world.cj
在 CodeArts IDE 中创建一个文件,叫 hello_world.cj


填写如下代码,并保存该文件
import std.time.*
main(){
println("你好,仓颉\n你好~鸿蒙 \n你好!坚果派 👍" + DateTime.now().format("yyyy/MM/dd HH:mm:ssSSS OO"))
}

-
切换到该文件的物理目录,并编译
cd /storage/Users/currentUser/cangjieproject/demo/
cjc hello_world.cj


期间会弹出一系列的是否运行,均点击运行
即可编译成功,当前目录会生成 default.cjo 和 main 文件

- 签名
binary-sign-tool sign -inFile "./main" -outFile "./main-signed" -selfSign 1

- 授权
chmod +x ./main-signed

- 运行签名后的文件
./main-signed


恭喜!您已经在您的鸿蒙 PC 上成功的原生的开发了一个仓颉语言的应用!
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐


所有评论(0)