一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(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 的編譯構建系統。GN 的構建語言簡潔易讀,Ninja 的匯編級編譯規(guī)則直接高效。 為了在 OpenHarmony 中集成 Rust 代碼,并最大程度發(fā)揮 Rust 和 OpenHarmony 中原有 C/C++ 代碼的交互性,采用 GN 作為統一構建工具,即通過 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 應用系統庫示例

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.系統定義
2.技術框架
3.技術特性
4.系統安全

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.應用數據管理
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.網絡與鏈接
8.電話服務
9.數據管理
10.后臺任務(Background Task)管理
11.設備管理
12.設備使用信息統計
13.DFX
14.國際化開發(fā)
15.折疊屏系列
16………

wKgZomXW6RKATahiAAKz-zSMnR4040.png

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

    關注

    1

    文章

    234

    瀏覽量

    7095
  • 鴻蒙
    +關注

    關注

    60

    文章

    2619

    瀏覽量

    44042
  • OpenHarmony
    +關注

    關注

    29

    文章

    3854

    瀏覽量

    18600
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    開源鴻蒙開發(fā)必備!OpenHarmony替換Full SDK全攻略

    本文介紹開源鴻蒙OpenHarmony替換FullSDK的方法,演示設備為觸覺智能PurplePiOH鴻蒙開發(fā)板獲取FullSD
    的頭像 發(fā)表于 06-06 18:11 ?249次閱讀
    開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>必備!<b class='flag-5'>OpenHarmony</b>替換Full SDK全攻略

    鴻蒙北向開發(fā)OpenHarmony5.0 DevEco Studio開發(fā)工具安裝與配置

    本文介紹OpenHarmony5.0 DevEco Studio開發(fā)工具安裝與配置,鴻蒙北向開發(fā)入門必備!由觸覺智能Purple Pi OH鴻蒙
    的頭像 發(fā)表于 03-28 18:05 ?859次閱讀
    <b class='flag-5'>鴻蒙</b>北向<b class='flag-5'>開發(fā)</b><b class='flag-5'>OpenHarmony</b>5.0 DevEco Studio<b class='flag-5'>開發(fā)</b>工具安裝與配置

    正式發(fā)布 | 啟揚RK3568開發(fā)板已成功適配OpenHarmony4.0版本

    啟揚智能IAC-RK3568-Kit開發(fā)板支持Debian、Android等常見開源操作系統,目前已完成OpenHarmony4.0開源國產操作系統的適配工作,滿足國產化開源操作系統客戶的需求。啟揚
    的頭像 發(fā)表于 03-27 17:24 ?739次閱讀
    正式發(fā)布 | 啟揚RK3568<b class='flag-5'>開發(fā)</b>板已成功適配<b class='flag-5'>OpenHarmony4.0</b>版本

    【北京迅為】itop-3568 開發(fā)openharmony鴻蒙燒寫及測試-第2章OpenHarmony v3.2-Beta4版本測試

    【北京迅為】itop-3568 開發(fā)openharmony鴻蒙燒寫及測試-第2章OpenHarmony v3.2-Beta4版本測試
    的頭像 發(fā)表于 03-05 10:53 ?459次閱讀
    【北京迅為】itop-3568 <b class='flag-5'>開發(fā)</b>板<b class='flag-5'>openharmony</b><b class='flag-5'>鴻蒙</b>燒寫及測試-第2章<b class='flag-5'>OpenHarmony</b> v3.2-Beta4版本測試

    【北京迅為】itop-3568 開發(fā)openharmony鴻蒙燒寫及測試-第1章 體驗OpenHarmony—燒寫鏡像

    【北京迅為】itop-3568 開發(fā)openharmony鴻蒙燒寫及測試-第1章 體驗OpenHarmony—燒寫鏡像
    的頭像 發(fā)表于 03-04 16:31 ?550次閱讀
    【北京迅為】itop-3568 <b class='flag-5'>開發(fā)</b>板<b class='flag-5'>openharmony</b><b class='flag-5'>鴻蒙</b>燒寫及測試-第1章 體驗<b class='flag-5'>OpenHarmony</b>—燒寫鏡像

    鴻蒙北向開發(fā)OpenHarmony4.1 DevEco Studio開發(fā)工具安裝與配置

    OpenHarmony4.1 DevEco Studio開發(fā)工具安裝與配置,鴻蒙北向開發(fā)入門必備!
    的頭像 發(fā)表于 02-07 17:35 ?819次閱讀
    <b class='flag-5'>鴻蒙</b>北向<b class='flag-5'>開發(fā)</b><b class='flag-5'>OpenHarmony</b>4.1 DevEco Studio<b class='flag-5'>開發(fā)</b>工具安裝與配置

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

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

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

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

    鴻蒙原生開源庫ViewPool在OpenHarmony社區(qū)正式上線

    近日,由伙伴參與共建的鴻蒙原生開源庫“ViewPool”在OpenHarmony社區(qū)正式上線。這個開發(fā)庫是基于OpenHarmony技術孵化的成果,充分發(fā)揮了平臺的技術特性,同時融入了
    的頭像 發(fā)表于 12-20 14:44 ?624次閱讀

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

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

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

    本文介紹開源鴻蒙OpenHarmony系統下,開啟/關閉SELinux權限的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,已適配全新Open
    的頭像 發(fā)表于 11-18 19:03 ?835次閱讀
    如何在開源<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系統下,去除鎖屏開機后直接進入界面的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,已適
    的頭像 發(fā)表于 11-13 10:37 ?652次閱讀
    OpenHamrony<b class='flag-5'>4.0</b>去除鎖屏是一種什么體驗?觸覺智能給你支支招

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

    觸覺智能Purple Pi OH鴻蒙開發(fā)板,成功適配OpenHarmony5.0 Release版本!為大家?guī)?b class='flag-5'>OpenHarmony5.0特性講解!關注觸覺智能,為大家?guī)砀?/div>
    的頭像 發(fā)表于 10-25 10:51 ?1122次閱讀
    觸覺智能Purple Pi OH<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>板成功適配<b class='flag-5'>OpenHarmony</b>5.0 Release,開啟新征程

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

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

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

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