flutter編譯和構建鴻蒙應用程序(windows環境)

flutter編譯和構建鴻蒙應用程序(windows環境)

問題背景

針對 OpenHarmony 的 Flutter 版本已經開源,參考 https://gitee.com/openharmony-sig/flutter_flutter。
本文為實踐該流程,實現flutter打包鴻蒙hap包的流程。目前流程已經走完,不過最后打包hap包依賴于flutter engine構建,目前還沒構建完成。下次持續更新。

問題分析

構建環境:

flutter tools指令支持Linux、Mac和Windows下使用。

構建依賴:

依賴flutter engine(https://github.com/flutter/engine)構建產物:ohos_debug_unopt_arm64 與 ohos_release_arm64,請在flutter tools指令運行參數中添加:–local-engine=<engine產物目錄>

構建步驟:

1、下載命令行工具,并配置環境變量ohpm與sdkmanager,

下載地址: https://developer.harmonyos.com/cn/develop/deveco-studio#download_cli ,使用指導: https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/ide-command-line-ohpm-0000001490235312-V3
(1)解壓文件,進入“ohpm/bin”目錄,打開命令行工具,執行OHPM安裝腳本,
Windows環境下執行命令:
init.bat
在這里插入圖片描述

(2)將ohpm配置到環境變量中
Windows環境變量設置方法:
在此電腦 > 屬性 > 高級系統設置 > 高級 > 環境變量中,在系統或者用戶的PATH變量中,添加ohpm安裝位置下bin文件夾的路徑。(bin路徑配置了ohpm、ohsdkmgr、codelinter三個工具,如下圖所示)。
在這里插入圖片描述

配置環境變量:
OHPM_HOME

...\ohcommandline-tools-windows-2.0.0.2\oh-command-line-tools\ohpm

(3)安裝完成之后,重新打開命令行,執行如下命令
ohpm -v
終端輸出為版本號,則表示安裝成功。執行效果如下:
在這里插入圖片描述

2、下載sdk并配置環境變量,

ohsdkmgr使用指導,(參考 https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/ide-command-line-ohsdkmgr-0000001545647965-V3)
在這里插入圖片描述

注意:使用ohsdkmgr要求java版本必須大于17,java17的安裝和配置參考 https://blog.csdn.net/tiehou/article/details/129575138 。
(1)下載api為9的sdk
在這里插入圖片描述

(2)配置對應的環境變量:

export OHOS_SDK_HOME=/home/<user>/env/sdk
export HDC_HOME=/home/<user>/env/sdk/10/toolchains
export PATH=$PATH:$HDC_HOME# 配置HarmonyOS sdk
export HOS_SDK_HOME=/home/<user>/env/{HarmonyOS sdk}
3、置Gradle:

下載 gradle 7.1 并解壓,配置到環境變量中。gradle下載地址: https://gradle.org/releases/
配置到環境變量:
PATH=/home/<user>/env/gradle-7.1/bin

4、下載Flutter,

下載完成后配置環境:

git clone https://gitee.com/openharmony-sig/flutter_flutter.gitexport PATH=/home/<user>/ohos/flutter_flutter/bin:$PATH
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
5、簽名工具需進行下列配置

(1)下載簽名工具(下載地址: https://gitee.com/openharmony/developtools_hapsigner,下載命令: git clone https://gitee.com/openharmony/developtools_hapsigner.git),并配置環境變量SIGN_TOOL_HOME。
export SIGN_TOOL_HOME=/home/<user>/ohos/developtools_hapsigner/autosign
(2)進入…\developtools_hapsigner\hapsigntool目錄,執行以下命令編譯得到hap-sign-tool.jar,確保其在目錄:./hapsigntool/hap_sign_tool/build/libs/hap-sign-tool.jar。

gradle build

在這里插入圖片描述

在這里插入圖片描述

注意:剛才配置了jdk版本為17,目前這個代碼選擇的gradle版本為7.1,對應的jdk版本需要配置還原1.8的版本。
(3)編輯autosign目錄下autosign.config和createAppCertAndProfile.config文件,并修改其中值:

sign.profile.inFile=profile_tmp.json

在autosign目錄下,新增profile_tmp_template.json文件,編輯如下:

{"version-name": "2.0.0","version-code": 2,"app-distribution-type": "os_integration","uuid": "5027b99e-5f9e-465d-9508-a9e0134ffe18","validity": {"not-before": 1594865258,"not-after": 1689473258},"type": "release","bundle-info": {"developer-id": "OpenHarmony","distribution-certificate": "-----BEGIN CERTIFICATE-----\nMIICSTCCAc+gAwIBAgIFAJV7uNUwCgYIKoZIzj0EAwIwYzELMAkGA1UEBhMCQ04x\nFDASBgNVBAoMC09wZW5IYXJtb255MRkwFwYDVQQLDBBPcGVuSGFybW9ueSBUZWFt\nMSMwIQYDVQQDDBpPcGVuSGFybW9ueSBBcHBsaWNhdGlvbiBDQTAeFw0yMjAxMjkw\nNTU0MTRaFw0yMzAxMjkwNTU0MTRaMGgxCzAJBgNVBAYTAkNOMRQwEgYDVQQKDAtP\ncGVuSGFybW9ueTEZMBcGA1UECwwQT3Blbkhhcm1vbnkgVGVhbTEoMCYGA1UEAwwf\nT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gUmVsZWFzZTBZMBMGByqGSM49AgEGCCqG\nSM49AwEHA0IABAW8pFu7tHGUuWtddD5wvazc1qN8ts9UPZH4pecbb/bSFWKh7X7R\n/eTVaRrCTSSdovI1dhoV5GjuFsKW+jT2TwSjazBpMB0GA1UdDgQWBBScyywAaAMj\nI7HcuIS42lvZx0Lj+zAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUE\nDDAKBggrBgEFBQcDAzAYBgwrBgEEAY9bAoJ4AQMECDAGAgEBCgEAMAoGCCqGSM49\nBAMCA2gAMGUCMFfNidGo6uK6KGT9zT1T5bY1NCHTH3P3muy5X1xudOgxWoOqIbnk\ntmQYB78dxWEHLQIxANfApAlXAD/0hnyNC8RDzfLOPEeay6jU9FXJj3AoR90rwZpR\noN9sYD6Oks4VGRw6yQ==\n-----END CERTIFICATE-----\n","bundle-name": "{{ohosId}}","apl": "normal","app-feature": "hos_normal_app"},"acls": {"allowed-acls": [""]},"permissions": {"restricted-permissions": []},"issuer": "pki_internal"
}
6、構建

(1)運行 flutter doctor -v 檢查環境變量配置是否正確
(2)創建工程

# 創建工程
flutter create --platforms ohos flutter_demo

執行上面的創建工程命令,報錯提示需要鴻蒙的sdk。
在這里插入圖片描述

這里我之前下載過鴻蒙版的deveco studio開發過鴻蒙原生項目,環境變量直接增加直接鴻蒙的sdk,重新創建項目OK。
在這里插入圖片描述

(3)編譯命令,編譯產物在flutter_demo/ohos/entry/build/default/outputs/default/entry-default-signed.hap下。

# 進入工程根目錄編譯
flutter build hap --local-engine-src-path /home/<user>/ohos/engine/src --local-engine ohos_release_arm64

編譯依賴flutter engine的編譯產物,所以我們在編譯項目之前要先對flutter engine進行編譯構建。
由于時間關系,下次持續更新。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/168084.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168084.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168084.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

flink的java.lang.IllegalStateException: Buffer pool is destroyed 異常

背景 最近flink的在線應用出現錯誤java.lang.IllegalStateException: Buffer pool is destroyed&#xff0c;本文記錄下這個錯誤的原因 錯誤原因 詳細的日志堆棧如下: Caused by: java.lang.IllegalStateException: Buffer pool is destroyed. at org.apache.flink.runtime…

Ps:畫筆工具的基本操作

畫筆工具 Brush Tool是 Ps 中最常用的工具&#xff0c;廣泛地用于繪畫與修飾工作。 雖然多數操作可在畫筆工具的工具選項欄中選擇執行&#xff0c;但是如果能記住相應的快捷鍵可大大提高工作效率。 熟練掌握畫筆工具的操作對于使用其他工具也非常有益&#xff0c;因為 Ps 中許多…

CSS-長度單位篇

px&#xff1a;像素em&#xff1a;相對元素font-size的倍數rem&#xff1a;相對根字體大小&#xff0c;html標簽就是根%&#xff1a;相對父元素計算 注意&#xff1a;CSS中設置長度&#xff0c;必須加單位&#xff0c;否則樣式無效&#xff01;

Maven - 打包之爭:Jar vs. Shade vs. Assembly

文章目錄 Pre概述Jar 打包方式_maven-jar-pluginOverview使用官方文檔 Shade 打包方式_maven-shade-pluginOverview使用將部分jar包添加或排除將依賴jar包內部資源添加或排除自動將所有不使用的類排除將依賴的類重命名并打包進來 &#xff08;隔離方案&#xff09;修改包的后綴…

ElasticSearch之cat component templates API

命令樣例如下&#xff1a; curl -X GET "https://localhost:9200/_cat/component_templates?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"執行結果輸出如下&#xff1a; name …

Qt/QML編程學習之心得:一個QML工程的學習筆記(十)

前言: 到底什么是Qt Quick呢?因為Qt Quick是Qt新引入的,Qt Quick由Qt Quick模塊提供,它是一個編寫QML應用的標準庫。Qt Quick模塊提供了兩種接口:使用QML語言創建應用的QML接口和使用C++語言擴展QML的C++接口。使用Qt Quick模塊,設計人員和開發人員可以輕松地構建流暢的…

【自主探索】基于 frontier_exploration 的單個機器人自主探索建圖

文章目錄 一、概述1、功能2、要求 二、使用方法1、用于運行演示2、用于開發人員2.1. 探索無/地圖數據2.2. 使用 /map 數據進行探索 三、提供的組件1、explore_client1.1. 調用的操作1.2. 訂閱主題1.3. 發布主題 2、explore_server2.1. 提供的操作2.2. 調用的操作2.3. 調用的服務…

【科技素養】藍橋杯STEMA 科技素養組模擬練習試卷6

1、將一個空塑料袋與一個裝滿空氣的塑料袋放到秤上稱重。在兩個塑料袋本身完全一樣的情況下&#xff0c;得出的結果會是 A、空塑料袋更重 B、裝滿空氣的塑料袋更重 C、兩個塑料袋一樣重 D、無法判斷 答案&#xff1a;C 2、全球變暖帶來的一個主要影響就是海平面的上升。造…

web前端開發基礎----標準流布局和非標準流布局

1&#xff0c;標準流布局 標準流&#xff0c;也稱文檔流或普通流&#xff0c;是所有元素默認的布局方式。 在標準流中&#xff0c;元素按照其在 HTML 中出現的順序&#xff0c;自上而下依次排列&#xff0c;并占據其父容器內的可用空間。 標準流中的元素按照其自然尺寸和位置進…

uniapp實現多時間段設置

功能說明&#xff1a; 1 點擊新增時間&#xff0c;出現一個默認時間段模板&#xff0c;不能提交 2 點擊“新增時間文本”&#xff0c;彈出彈窗&#xff0c;選擇時間&#xff0c;不允許開始時間和結束時間同時為00:00&#xff0c; <view class"item_cont"> …

TCP/IP協議:最流行的電子郵件協議SMTP(簡單郵件傳輸協議)詳解

SMTP 是一種電子郵件協議&#xff0c;用于通過互聯網從一個電子郵件帳戶向另一個電子郵件帳戶發送電子郵件。它是TCP/IP協議應用層的一部分。作為一種電子郵件協議&#xff0c;它建立了不同電子郵件客戶端和帳戶之間輕松信息交換的規則。這樣&#xff0c;簡單郵件傳輸協議就可以…

求最小的起始正整數

題目描述 給你一個整數數組 nums 。你可以選定任意的 正數 startValue 作為初始值。 你需要從左到右遍歷 nums 數組&#xff0c;并將 startValue 依次累加上 nums 數組中的值。 請你在確保累加和始終大于等于 1 的前提下&#xff0c;選出一個最小的 正數 作為 startValue 。…

【Rust 日報】2023-11-23 - egui 0.24 發布

項目 - egui 0.24 發布 egui 是一個易于使用的 Rust GUI 庫&#xff0c;支持在本地環境和瀏覽器中運行。 egui 0.24 的重要新特性是多視窗功能。在支持的后端上&#xff08;如eframe&#xff09;&#xff0c;用戶可以利用全新的 viewport API 同時生成多個本機窗口。 此外&…

Git 的基本概念和使用方式。

Git 是一個開源的分布式版本控制系統&#xff0c;它可以記錄代碼的修改歷史&#xff0c;跟蹤文件的版本變化&#xff0c;并支持多人協同開發。Git 的基本概念包括&#xff1a; 1. 倉庫&#xff08;Repository&#xff09;&#xff1a;存放代碼和版本歷史記錄的地方。 2. 分支…

ArkUI開發進階—@Builder函數@BuilderParam裝飾器的妙用與場景應用

ArkUI開發進階—@Builder函數@BuilderParam裝飾器的妙用與場景應用 HarmonyOS,作為一款全場景分布式操作系統,為了推動更廣泛的應用開發,采用了一種先進而靈活的編程語言——ArkTS。ArkTS是在TypeScript(TS)的基礎上發展而來,為HarmonyOS提供了豐富的應用開發工具,使開…

Educational Codeforces Round 158 (Rated for Div. 2)(A~E)(貪心,樹形DP)

A - Line Trip 題意&#xff1a;有一條路&#xff0c;可以用一條數線來表示。你位于數線上的點 0 &#xff0c;你想從點 0 到點 x &#xff0c;再回到點 0。你乘汽車旅行&#xff0c;每行駛 1個單位的距離要花費 1 升汽油。當您從點 0出發時&#xff0c;汽車已加滿油(油箱中的…

麒麟linux離線安裝dotnet core

1. 下載 dotnet core,以3.1為例 下載地址: 下載 .NET Core 3.1 (Linux、macOS 和 Windows) 查看linux cpu類型,然后根據類型下載 uname -m #結果是: aarch64 2. 放到指定目錄,比如:/usr/dotnet 3. 解壓dotnet-sdk-3.1.426-linux-arm64.tar.gz cd /usr/dotnet tar –zxvf a…

告別算法暗處:備案帶來的光明未來

在當今數字化時代&#xff0c;算法已經成為了企業發展和創新的關鍵推動力。然而&#xff0c;伴隨著算法的廣泛應用&#xff0c;數據隱私、知識產權和法規合規等問題也引發了越來越多的關切。為了解決這些問題&#xff0c;越來越多的公司開始意識到算法備案的重要性。本文將深入…

點云從入門到精通技術詳解100篇-基于深度學習的稀疏點云障礙物檢測(續)

目錄 3.1 連續幀點云空間特征融合 3.1.1 點云預處理 3.1.2 地面分割 3.1.3 自適應點云聚類

播放器開發(三):FFmpeg與SDL環境配置

學習課題&#xff1a;逐步構建開發播放器【QT5 FFmpeg6 SDL2】 環境配置 我這邊的是使用macOS&#xff1b;IDE用的是CLion&#xff1b;CMake構建&#xff0c;除了創建項目步驟、CMakeLists文件有區別之外的代碼層面不會有太大區別。 配置上只添加一下CMakeLists中FFmpeg和SD…