衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

[鴻蒙]OpenHarmony4.0的Rust開發(fā)

王程 ? 2024-02-26 17:28 ? 次閱讀

背景

Rust 是一門靜態(tài)強類型語言,具有更安全的內存管理、更好的運行性能、原生支持多線程開發(fā)等優(yōu)勢。Rust 官方也使用 Cargo 工具來專門為 Rust 代碼創(chuàng)建工程和構建編譯。 OpenHarmony 為了集成 C/C++ 代碼和提升編譯速度,使用了 GN + Ninja 的編譯構建系統(tǒng)。GN 的構建語言簡潔易讀,Ninja 的匯編級編譯規(guī)則直接高效。 為了在 OpenHarmony 中集成 Rust 代碼,并最大程度發(fā)揮 Rust 和 OpenHarmony 中原有 C/C++ 代碼的交互性,采用 GN 作為統(tǒng)一構建工具,即通過 GN 構建 Rust 源碼文件(xxx.rs),并增加與 C/C++ 互操作、編譯時 lint、測試、IDL 轉換、三方庫集成、IDE 等功能。同時擴展 gn 框架,支持接口自動化轉換,最大程度簡化開發(fā)。

基本概念

wKgaomXbKX-AAe6rAADEW5Pyw8c913.png

配置規(guī)則

OpenHarmony 提供了用于 Rust 代碼編譯構建的各類型 GN 模板,可以用于編譯 Rust 可執(zhí)行文件,動態(tài)庫和靜態(tài)庫等。各類型模板說明如下:

wKgZomXbKYmAZDfFAAKDbDTFKMc427.png

配置 Rust 靜態(tài)庫示例

該示例用于測試 Rust 可執(zhí)行 bin 文件和靜態(tài)庫 rlib 文件的編譯,以及可執(zhí)行文件對靜態(tài)庫的依賴,使用模板 ohos_rust_executable 和 ohos_rust_static_library。操作步驟如下:

1.創(chuàng)建 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.創(chuàng)建 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("http://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.執(zhí)行編譯得到的可執(zhí)行文件,運行結果如下:

./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 應用系統(tǒng)庫示例

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) 開發(fā)技術,這邊特意整理了《鴻蒙 (OpenHarmony)開發(fā)學習手冊》,希望對大家有所幫助:

《鴻蒙(Harmony OS)開發(fā)學習手冊》

入門必看:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.應用開發(fā)導讀(ArKTS)
2.……

wKgaomXW6N2AJp9uAAQXRxEAprs547.png

HarmonyOS概念:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.系統(tǒng)定義
2.技術框架
3.技術特性
4.系統(tǒng)安全

wKgaomXW6OSAFcCRAAV2zd2X_1s891.png

快速入門:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.基本概念
2.構建第一個ArkTS應用
3.構建第一個JS應用
4…

wKgZomXW6PuAA7wEAAKx6By_2Z8377.png

開發(fā)基礎知識:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.應用基礎知識
2.配置文件
3.應用數(shù)據(jù)管理
4.應用安全管理
5.應用隱私保護
6.三方應用調用管控機制
7.資源分類與訪問
8.學習ArkTS
9…

wKgZomXW6QaAM4niAAQzrXUUPik914.png

基于ArkTS 開發(fā):https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.Ability開發(fā)
2.UI開發(fā)
3.公共事件與通知
4.窗口管理
5.媒體
6.安全
7.網(wǎng)絡與鏈接
8.電話服務
9.數(shù)據(jù)管理
10.后臺任務(Background Task)管理
11.設備管理
12.設備使用信息統(tǒng)計
13.DFX
14.國際化開發(fā)
15.折疊屏系列
16………

wKgZomXW6RKATahiAAKz-zSMnR4040.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Rust
    +關注

    關注

    1

    文章

    230

    瀏覽量

    6664
  • 鴻蒙
    +關注

    關注

    57

    文章

    2392

    瀏覽量

    43050
  • OpenHarmony
    +關注

    關注

    25

    文章

    3744

    瀏覽量

    16577
收藏 人收藏

    評論

    相關推薦

    OpenHarmony源碼編譯后燒錄鏡像教程,RK3566鴻蒙開發(fā)板演示

    本文介紹瑞芯微主板/開發(fā)板編譯OpenHarmony源碼后燒錄鏡像的教程,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示。搭載了瑞芯微RK3566四核處理器,樹莓派卡片電腦設計,支持開
    的頭像 發(fā)表于 12-30 10:08 ?179次閱讀
    <b class='flag-5'>OpenHarmony</b>源碼編譯后燒錄鏡像教程,RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板演示

    OpenHarmony怎么修改DPI密度值?觸覺智能RK3566鴻蒙開發(fā)板演示

    開源鴻蒙OpenHarmony系統(tǒng)下,修改DPI密度值的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,搭載了瑞芯微RK3566四核處理器,Laval
    的頭像 發(fā)表于 12-24 11:46 ?259次閱讀
    <b class='flag-5'>OpenHarmony</b>怎么修改DPI密度值?觸覺智能RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板演示

    OpenHarmony屬性信息怎么修改?觸覺智能RK3566鴻蒙開發(fā)板來演示

    本文介紹開源鴻蒙OpenHarmony系統(tǒng)下,修改產(chǎn)品屬性信息的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,已適配全新OpenHarmon
    的頭像 發(fā)表于 11-27 09:31 ?232次閱讀
    <b class='flag-5'>OpenHarmony</b>屬性信息怎么修改?觸覺智能RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板來演示

    如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發(fā)板演示

    本文介紹開源鴻蒙OpenHarmony系統(tǒng)下,開啟/關閉SELinux權限的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,已適配全新Open
    的頭像 發(fā)表于 11-18 19:03 ?420次閱讀
    如何在開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b>開啟SELinux模式?RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板演示

    OpenHamrony4.0去除鎖屏是一種什么體驗?觸覺智能給你支支招

    本文介紹開源鴻蒙OpenHarmony 4.0系統(tǒng)下,去除鎖屏開機后直接進入界面的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,已適
    的頭像 發(fā)表于 11-13 10:37 ?320次閱讀
    OpenHamrony<b class='flag-5'>4.0</b>去除鎖屏是一種什么體驗?觸覺智能給你支支招

    OpenHarmony4.0系統(tǒng)修改屏幕旋轉方法,RK3566鴻蒙開發(fā)板備戰(zhàn)第九屆華為ICT大賽

    本文提供OpenHarmony4.0系統(tǒng)豎屏修改為旋轉時的操作方法,本次使用了觸覺智能的Purple Pi OH鴻蒙開源主板,搭載了瑞芯微RK3566,Laval官方社區(qū)主薦的一款鴻蒙開發(fā)
    的頭像 發(fā)表于 09-25 00:29 ?614次閱讀
    <b class='flag-5'>OpenHarmony4.0</b>系統(tǒng)修改屏幕旋轉方法,RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板備戰(zhàn)第九屆華為ICT大賽

    鴻蒙OpenHarmony南向/北向快速開發(fā)教程-迅為RK3568開發(fā)

    4.1學習之旅了嗎?快來加入我們,一起探索鴻蒙4.1系統(tǒng)的無限魅力吧! 【北京迅為】OpenHarmony學習開發(fā)系列教程(第1期 北向基礎篇一) P0_先導課 P1_OpenHarmony
    發(fā)表于 07-23 10:44

    深耕鴻蒙生態(tài),國科微旗艦芯片獲“鴻蒙4.0”首款認證

    7月9日,國科微宣布旗下超高清視頻解碼及商顯芯片通過OpenHarmony4.0版本兼容性測評,獲頒鴻蒙生態(tài)產(chǎn)品兼容性證書。其中,國科微GK6323V100C是業(yè)界首款通過鴻蒙4.0
    的頭像 發(fā)表于 07-10 13:10 ?534次閱讀
    深耕<b class='flag-5'>鴻蒙</b>生態(tài),國科微旗艦芯片獲“<b class='flag-5'>鴻蒙</b><b class='flag-5'>4.0</b>”首款認證

    鴻蒙開發(fā):【OpenHarmony 4.0 Release指導】

    OpenHarmony 4.0版本如期而至,開發(fā)套件同步升級到API 10。相比3.2 Release版本,新增4000多個API,應用開發(fā)能力更加豐富;HDF新增200多個HDI接口
    的頭像 發(fā)表于 05-14 09:59 ?1632次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>4.0</b> Release指導】

    鴻蒙OpenHarmony開發(fā)板解析:【Rust模塊配置規(guī)則和指導】

    Rust是一門靜態(tài)強類型語言,具有更安全的內存管理、更好的運行性能、原生支持多線程開發(fā)等優(yōu)勢。Rust官方也使用Cargo工具來專門為Rust代碼創(chuàng)建工程和構建編譯。
    的頭像 發(fā)表于 05-10 11:32 ?1384次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發(fā)</b>板解析:【<b class='flag-5'>Rust</b>模塊配置規(guī)則和指導】

    【開源鴻蒙】下載OpenHarmony 4.1 Release源代碼

    本文介紹了如何下載開源鴻蒙OpenHarmony)操作系統(tǒng) 4.1 Release版本的源代碼,該方法同樣可以用于下載OpenHarmony最新開發(fā)版本(master分支)或者
    的頭像 發(fā)表于 04-27 23:16 ?1053次閱讀
    【開源<b class='flag-5'>鴻蒙</b>】下載<b class='flag-5'>OpenHarmony</b> 4.1 Release源代碼

    鴻蒙網(wǎng)絡開發(fā)學習:【ylong_http】

    ylong_http 構建了完整的 HTTP 能力,支持用戶使用 HTTP 能力完成通信場景的需求。 ylong_http 使用 Rust 編寫,為 OpenHarmonyRust 能力構筑提供支持。
    的頭像 發(fā)表于 03-25 16:36 ?770次閱讀
    <b class='flag-5'>鴻蒙</b>網(wǎng)絡<b class='flag-5'>開發(fā)</b>學習:【ylong_http】

    鴻蒙實戰(zhàn)開發(fā)學習【FaultLoggerd組件】

    Faultloggerd部件是OpenHarmony中C/C++運行時崩潰臨時日志的生成及管理模塊。面向基于 Rust 開發(fā)的部件,F(xiàn)aultloggerd 提供了Rust Panic
    的頭像 發(fā)表于 03-17 20:39 ?574次閱讀
    <b class='flag-5'>鴻蒙</b>實戰(zhàn)<b class='flag-5'>開發(fā)</b>學習【FaultLoggerd組件】

    鴻蒙實戰(zhàn)開發(fā):【FaultLoggerd組件】講解

    Faultloggerd部件是OpenHarmony中C/C++運行時崩潰臨時日志的生成及管理模塊。面向基于 Rust 開發(fā)的部件,F(xiàn)aultloggerd 提供了Rust Panic
    的頭像 發(fā)表于 03-12 16:22 ?1129次閱讀
    <b class='flag-5'>鴻蒙</b>實戰(zhàn)<b class='flag-5'>開發(fā)</b>:【FaultLoggerd組件】講解

    鴻蒙OpenHarmony 4.0藍牙代碼結構簡析

    OpenHarmony 4.0藍牙代碼結構簡析前言 OpenHarmony 4.0上藍牙倉和目錄結構進行一次較大整改,本文基于4.0以上版本
    的頭像 發(fā)表于 02-26 16:08 ?1689次閱讀
    【<b class='flag-5'>鴻蒙</b>】<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>4.0</b>藍牙代碼結構簡析
    百家乐楼梯缆| 电脑打百家乐官网怎么赢| 游戏百家乐的玩法技巧和规则 | 打百家乐的介绍| 百家乐官网优惠现金| 福布斯百家乐的玩法技巧和规则| 百家乐官网游戏图片| 百家娱乐| 网上百家乐有哪些玩法| 百家乐官网庄闲和赢率| 荃湾区| 威尼斯人娱乐城百家乐赌博| 属蛇做生意坐向| 博E百百家乐官网娱乐城| 大发888真钱官网| 百家乐路单| 百家乐官网长龙技巧| 网络博彩| 百家乐博彩吧| 百家乐视频游戏界面| 百家乐官网号游戏机| 百家乐官网教父方法| 大发888开户博盈国际| 百家乐平投注法| 百家乐官网一邱大师打法| 金冠娱乐城注册| 微信百家乐群二维码| 金沙百家乐娱乐城场| 哪个百家乐官网网站信誉好| 渑池县| 德州扑克高牌| 杭州百家乐西园| 百家乐娱乐城送分| 怎么玩百家乐官网呀| 凯旋门百家乐官网技巧| 永利博国际| 水果机破解器| 尊龙百家乐娱乐场| 百家乐在线作弊| 木棉百家乐官网的玩法技巧和规则 | 怀化市|