在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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("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.執行編譯得到的可執行文件,運行結果如下:

./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

    文章

    230

    瀏覽量

    6665
  • 鴻蒙
    +關注

    關注

    57

    文章

    2392

    瀏覽量

    43055
  • OpenHarmony
    +關注

    關注

    25

    文章

    3747

    瀏覽量

    16584
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

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

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

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

    觸覺智能Purple Pi OH鴻蒙開發板成功適配OpenHarmony5.0 Release,開啟新征程

    觸覺智能Purple Pi OH鴻蒙開發板,成功適配OpenHarmony5.0 Release版本!為大家帶來OpenHarmony5.0特性講解!關注觸覺智能,為大家帶來更多
    的頭像 發表于 10-25 10:51 ?485次閱讀
    觸覺智能Purple Pi OH<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>板成功適配<b class='flag-5'>OpenHarmony</b>5.0 Release,開啟新征程

    OpenHarmony4.0系統修改屏幕旋轉方法,RK3566鴻蒙開發板備戰第九屆華為ICT大賽

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

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

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

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

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

    鴻蒙開發:【OpenHarmony 4.0 Release指導】

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

    鴻蒙OpenHarmony開發板解析:【Rust模塊配置規則和指導】

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

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

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

    鴻蒙實戰開發學習【FaultLoggerd組件】

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

    鴻蒙實戰開發:【FaultLoggerd組件】講解

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

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

    OpenHarmony 4.0藍牙代碼結構簡析前言 OpenHarmony 4.0上藍牙倉和目錄結構進行一次較大整改,本文基于4.0以上版本
    的頭像 發表于 02-26 16:08 ?1690次閱讀
    【<b class='flag-5'>鴻蒙</b>】<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>4.0</b>藍牙代碼結構簡析
    主站蜘蛛池模板: 色综合久久综合 | 日本五十交尾在线观看 | 色综合久久88 | 亚洲专区一路线二 | 亚洲aa视频 | 永久在线免费观看 | 国产成人精品视频一区二区不卡 | 8844aa在线毛片 | 网www天堂资源在线 网红和老师啪啪对白清晰 网络色综合久久 | 91亚色视频在线观看 | 天天操夜夜艹 | 欧洲妇女成人淫片aaa视频 | 欧美色图在线视频 | 日韩精品你懂的在线播放 | 色婷婷99综合久久久精品 | 日韩网| 色视频免费 | 欧美日韩伦理 | 亚洲毛片儿 | 麻豆美女大尺度啪啪 | ts国产 | 免费人成在线观看网站 | 国产视频每日更新 | 女人被男人免费播放网站 | 天天射天天干天天 | 永久黄色免费网站 | mitunav在线 | aa黄色大片| 视频三区| 河南毛片| h视频在线观看免费网站 | 欧美丝妇 | 夜天干天干啦天干天天爽 | aaa一区二区三区 | 人人艹人人射 | 久久久久久人精品免费费看 | 久久午夜神器 | 天天添天天射 | 日韩毛片免费视频 | 女人张开腿男人猛桶视频 | 久久综合九色综合97_ 久久久 |