0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

[鸿蒙]OpenHarmony4.0的Rust开发

王程 2024-02-26 17:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

背景

Rust 是一门静态强类型语言,具有更安全的内存管理、更好的运行性能、原生支持多线程开发等优势。Rust 官方也使用 Cargo 工具来专门为 Rust 代码创建工程和构建编译。 OpenHarmony 为了集成 C/C++ 代码和提升编译速度,使用了 GN + Ninja 的编译构建系统。GN 的构建语言简洁易读,Ninja 的汇编级编译规则直接高效。 为了在 OpenHarmony 中集成 Rust 代码,并最大程度发挥 Rust 和 OpenHarmony 中原有 C/C++ 代码的交互性,采用 GN 作为统一构建工具,即通过 GN 构建 Rust 源码文件(xxx.rs),并增加与 C/C++ 互操作、编译时 lint、测试、IDL 转换、三方库集成、IDE 等功能。同时扩展 gn 框架,支持接口自动化转换,最大程度简化开发。

基本概念

wKgaomXbKX-AAe6rAADEW5Pyw8c913.png

配置规则

OpenHarmony 提供了用于 Rust 代码编译构建的各类型 GN 模板,可以用于编译 Rust 可执行文件,动态库和静态库等。各类型模板说明如下:

wKgZomXbKYmAZDfFAAKDbDTFKMc427.png

配置 Rust 静态库示例

该示例用于测试 Rust 可执行 bin 文件和静态库 rlib 文件的编译,以及可执行文件对静态库的依赖,使用模板 ohos_rust_executable 和 ohos_rust_static_library。操作步骤如下:

1.创建 build/rust/tests/test_rlib_crate/src/simple_printer.rs,如下所示:

//! simple_printer

/// struct RustLogMessage

pub struct RustLogMessage {
    /// i32: id
    pub id: i32,
    /// String: msg
    pub msg: String,
}

/// function rust_log_rlib
pub fn rust_log_rlib(msg: RustLogMessage) {
    println!("id:{} message:{:?}", msg.id, msg.msg)
}
​

2.创建 build/rust/tests/test_rlib_crate/src/main.rs,如下所示:

//! rlib_crate example for Rust.

extern crate simple_printer_rlib;

use simple_printer_rlib::rust_log_rlib;
use simple_printer_rlib::RustLogMessage;

fn main() {
    let msg: RustLogMessage = RustLogMessage {
        id: 0,
        msg: "string in rlib crate".to_string(),
    };
    rust_log_rlib(msg);
}
​

3.配置 gn 脚本 build/rust/tests/test_rlib_crate/BUILD.gn,如下所示:

import("//build/ohos.gni")

ohos_rust_executable("test_rlib_crate") {
  sources = [ "src/main.rs" ]
  deps = [ ":simple_printer_rlib" ]
}

ohos_rust_static_library("simple_printer_rlib") {
  sources = [ "src/simple_printer.rs" ]
  crate_name = "simple_printer_rlib"
  crate_type = "rlib"
  features = [ "std" ]
}
​

4.执行编译得到的可执行文件,运行结果如下:

./build.sh --product-name rk3568 --build-target build/rust/tests:tests  --no-prebuilt-sdk
hdc_std.exe shell mount -o rw,remount /
hdc_std.exe shell file send test_dylib_crate /data/local/tmp
hdc_std.exe file send libsimple_printer_dylib.dylib.so /system/lib

hdc_std.exe shell
# cd /data/local/tmp
# chmod +x test_dylib_crate
# ./test_dylib_crate
id:0 message:"string in rlib crate"

配置 Rust 应用系统库示例

1.增加依赖

// GN 里增加依赖
ohos_rust_executable("test_dylib_crate") {
  sources = [ "src/main.rs" ]
  deps = [ ":simple_printer_dylib" ]
  # 增加外部依赖
  external_deps = [ "hilog:hilog_rust" ]
}

// bundle.json 里增加依赖
"components": [
  "hilog"
],


2.增加调用

extern crate simple_printer_dylib;

use simple_printer_dylib::rust_log_dylib;
use simple_printer_dylib::RustLogMessage;
//! 增加引用
use std::ffi::{ c_char, CString };
use hilog_rust::{hilog, info, HiLogLabel, LogType};

const LOG_LABEL: HiLogLabel = HiLogLabel {
    log_type: LogType::LogCore,
    domain: 0xD002220, 
    tag: "TEST_RUST",
};

fn main() {
    let msg: RustLogMessage = RustLogMessage {
        id: 0,
        msg: "string in rlib crate".to_string(),
    };
    rust_log_dylib(msg);
    //! 增加调用
    info!(LOG_LABEL, "Fnished enable all keys.");
}
​

3.运行测试

// 运行
# ./test_dylib_crate
id:0 message:"string in rlib crate"

// 查看hilog
# hilog | grep Fnished
08-17 05:14:18.121 29293 29293 I C02220/TEST_RUST: Fnished enable all keys.

为了能让大家更好的学习鸿蒙 (OpenHarmony) 开发技术,这边特意整理了《鸿蒙 (OpenHarmony)开发学习手册》,希望对大家有所帮助:

《鸿蒙(Harmony OS)开发学习手册》

入门必看:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.应用开发导读(ArKTS)
2.……

wKgaomXW6N2AJp9uAAQXRxEAprs547.png

HarmonyOS概念:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.系统定义
2.技术框架
3.技术特性
4.系统安全

wKgaomXW6OSAFcCRAAV2zd2X_1s891.png

快速入门:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.基本概念
2.构建第一个ArkTS应用
3.构建第一个JS应用
4…

wKgZomXW6PuAA7wEAAKx6By_2Z8377.png

开发基础知识:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS
9…

wKgZomXW6QaAM4niAAQzrXUUPik914.png

基于ArkTS 开发:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16………

wKgZomXW6RKATahiAAKz-zSMnR4040.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Rust
    +关注

    关注

    1

    文章

    241

    浏览量

    7684
  • 鸿蒙
    +关注

    关注

    60

    文章

    3064

    浏览量

    46270
  • OpenHarmony
    +关注

    关注

    33

    文章

    3984

    浏览量

    21458
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    2025开放原子开发者大会旋武开源社区Rust分论坛成功举办

    11月22日,2025开放原子开发者大会——旋武开源社区Rust分论坛在北京顺利召开。论坛以“共建中国Rust生态”为核心主题,汇聚京东、华为、vivo、阿里、毛豆教育、DORA社区及南京大学等企业与学术机构技术专家,及众多
    的头像 发表于 11-27 14:55 904次阅读

    2025开放原子开发者大会旋武社区Rust分论坛即将启幕

    在数字化转型持续深化、系统安全与性能需求愈发迫切的当下,Rust凭借强大的内存安全、高并发性能和卓越的开发者体验,正成为重塑软件开发疆界的关键力量,更是构建下一代可靠高效基础设施的核心选择。11月
    的头像 发表于 11-13 10:00 796次阅读

    融合AI的OpenHarmony应用软件开发:ai学习自律辅助软件

    *附件:ai study.zip*附件:融合AI的OpenHarmony应用软件开发:ai学习自律辅助软件.pdf 基于开源鸿蒙编写的ai辅助学习软件
    发表于 11-12 15:38

    触觉智能Purple Pi OH开发板率先适配OpenHarmony6.0 Release,鸿蒙明星开发

    2025年9月19日,在官网上线开源鸿蒙OpenHarmony6.0Release仅13天,触觉智能宣布旗下PurplePiOH开发板成功完成OpenHarmony6.0Release
    的头像 发表于 10-29 08:00 1226次阅读
    触觉智能Purple Pi OH<b class='flag-5'>开发</b>板率先适配<b class='flag-5'>OpenHarmony</b>6.0 Release,<b class='flag-5'>鸿蒙</b>明星<b class='flag-5'>开发</b>板

    触觉智能RK3576开发板通过OpenHarmony5.0 XTS认证

    触觉智能作为开源鸿蒙南向硬件厂家,旗下RK3576开发板及其核心板(模组)PurplePiOH2系列通过了OpenHarmony5.0XTS认证,鸿蒙硬件生态兼容性能再次提升!证书如下
    的头像 发表于 10-21 12:48 1287次阅读
    触觉智能RK3576<b class='flag-5'>开发</b>板通过<b class='flag-5'>OpenHarmony</b>5.0 XTS认证

    【置顶公告】视美泰开源鸿蒙系列产品业务咨询与商务合作通道正式开启!

    合作、高效响应需求,现正式开通开源鸿蒙系列产品专项业务咨询与商务合作通道,诚邀各界伙伴携手共进! 合作内容方向开源鸿蒙硬件定制开发基于OpenHarmony的智能终端、边缘计算设备、行
    发表于 10-20 16:23

    触觉智能RK3576开发OpenHarmony开源鸿蒙系统USB控制传输功能示例

    本文介绍OpenHarmony开源鸿蒙系统的USB控制传输功能实现及相关代码示例,基于触觉智能RK3576开发板PurplePiOH2演示。OpenHarmony的USB通信介绍实现
    的头像 发表于 09-30 16:31 1917次阅读
    触觉智能RK3576<b class='flag-5'>开发</b>板<b class='flag-5'>OpenHarmony</b>开源<b class='flag-5'>鸿蒙</b>系统USB控制传输功能示例

    触觉智能RK3506开发板通过OpenHarmony 5.1 XTS认证,引领鸿蒙开发新标杆!

    触觉智能作为瑞芯微专业方案商与开源鸿蒙南向硬件厂家,旗下RK3506开发板及其核心板(模组)通过OpenHarmony5.1XTS认证!这一消息犹在行业内引起了广泛关注,标志着触觉智能在鸿蒙
    的头像 发表于 08-14 23:49 2101次阅读
    触觉智能RK3506<b class='flag-5'>开发</b>板通过<b class='flag-5'>OpenHarmony</b> 5.1 XTS认证,引领<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>新标杆!

    开鸿开发板深度体验:从开源鸿蒙开发到AI场景实践

    的KaihongBoard-3588S-SBC和KaihongBoard-3576-SBC被评为“2025OpenHarmony明星开发板”,可实现设备快速开源鸿蒙化升级、分布式互联协同、弹性部署等能力。
    的头像 发表于 07-03 17:03 2098次阅读
    开鸿<b class='flag-5'>开发</b>板深度体验:从开源<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>到AI场景实践

    开源鸿蒙开发必备!OpenHarmony替换Full SDK全攻略

    本文介绍开源鸿蒙OpenHarmony替换FullSDK的方法,演示设备为触觉智能PurplePiOH鸿蒙开发板获取FullSD
    的头像 发表于 06-06 18:11 1116次阅读
    开源<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>必备!<b class='flag-5'>OpenHarmony</b>替换Full SDK全攻略

    触觉智能鸿蒙开发板率先通过OpenHarmony5.0认证(生态产品兼容性证书)

    触觉智能PurplePiOH鸿蒙开发板继4.1版本XTS认证火速出圈后,再次狂飙!成功通过OpenHarmony5.0ReleaseXTS认证,成为首批开放原子基金会生态产品之一。这一认证标志着其在
    的头像 发表于 06-06 17:54 1538次阅读
    触觉智能<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>板率先通过<b class='flag-5'>OpenHarmony</b>5.0认证(生态产品兼容性证书)

    全志科技亮相OpenHarmony开发者大会2025

    近日,OpenHarmony开发者大会 2025(OHDC.2025,以下简称“大会”)在深圳举办。大会正式发布了开源鸿蒙5.1 Release版本,举行了“开源鸿蒙应用技术组件共建启
    的头像 发表于 06-04 09:16 2493次阅读
    全志科技亮相<b class='flag-5'>OpenHarmony</b><b class='flag-5'>开发</b>者大会2025

    润和软件旗下润开鸿亮相开源鸿蒙开发者大会2025

    近日,开源鸿蒙开发者大会2025(OHDC.2025)于深圳再启新篇,会上正式发布了开源鸿蒙5.1 Release版本,并进行开源鸿蒙应用技术组件共建启动等重要仪式,面向
    的头像 发表于 06-03 16:22 1833次阅读

    华为亮相2025开源鸿蒙开发者大会

    近日,开源鸿蒙开发者大会2025(以下简称大会)在深圳成功举办。大会以开源鸿蒙5.1 Release版本发布为契机,聚焦开源鸿蒙技术革新和社区发展,全面呈现“Powered
    的头像 发表于 05-29 09:07 1544次阅读

    贝启BQ3568HM 开发板被选用为 OpenHarmony 明星开发

    经开放原子开源基金会OpenHarmony社区官方测评评选,贝启科技BQ3568HM开源鸿蒙开发板被正式选用为OpenHarmony明星开发
    的头像 发表于 05-25 00:22 1832次阅读
    贝启BQ3568HM <b class='flag-5'>开发</b>板被选用为 <b class='flag-5'>OpenHarmony</b> 明星<b class='flag-5'>开发</b>板