成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Ubuntu22搭建支持OpenHarmony的Flutter應用開發環境詳細教程

系統 OpenHarmony
文中涉及到的一些源碼存放目錄和環境變量配置,請根據你實際存放的位置進行相應的調整。文章附件提供Flutter打包的OpenHarmony應用hap樣本,可供參考研究。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

序言

實踐過程中的部分視頻演示

  • https://www.bilibili.com/video/BV1Dp4y1w7kP
  • https://www.bilibili.com/video/BV1Fj411t7mM
  • 由于支持OpenHarmony的Flutter發布不久,還存在若干問題和文檔遺漏,隨著時間的推移都在不斷完善,本文是我在搭建開發環境和探索研究過程下來的一個詳細筆記,希望對大家有所幫助!
  • 文中涉及到的一些源碼存放目錄和環境變量配置,請根據你實際存放的位置進行相應的調整。
  • 文章附件提供Flutter打包的OpenHarmony應用hap樣本,可供參考研究

環境概述

  • Ubuntu 22.04 (虛擬機)
  • Flutter Engine https://gitee.com/openharmony-sig/flutter_engine
  • Flutter SDK https://gitee.com/openharmony-sig/flutter_flutter
  • ohos-sdk-full 4.0 beta2 http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist

Flutter Engine 環境和編譯

安裝依賴

  • sudo apt install git curl unzip pkgconf python3-pip
  • depot_tools
mkdir ~/work
cd ~/work
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
vim ~/.bashrc
# --- 寫入下面這行配置
export PATH="$PATH:/home/ubuntu/work/depot_tools"
# ---
source ~/.bashrc

獲取源碼

ssh-keygen
cat ~/.ssh/id_rsa.pub
# Gitee - 設置 - SSH公鑰 - 添加

cd ~/work
mkdir engine
cd engine
touch .gclient
vim .gclient
# --- 寫入如下內容
solutions = [
  {
    "managed": False,
    "name": "src/flutter",
    "url": "git@gitee.com:openharmony-sig/flutter_engine.git",
    "custom_deps": {},
    "deps_file": "DEPS",
    "safesync_url": "",
  },
]
# ---
gclient sync

# 從 http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist 每日構建中,下載ohos-sdk-full,在engine根目錄下,新建文件夾 ndk/linux/4.0 ,解壓ohos-sdk-full sdk中的native文件夾到 ndk/linux/4.0 文件夾中;
mkdir -p ndk/linux/4.0
cd ndk/linux/4.0
# 把 native-linux-x64-4.0.9.6-Beta2.zip 放到此目錄,并解壓
unzip native-linux-x64-4.0.9.6-Beta2.zip

編譯構建

開始編譯:

cd ~/work/engine
make

出現如下錯誤:

../../third_party/dart/runtime/bin/socket_base_posix.cc -o obj/third_party/dart/runtime/bin/dart_io_api.socket_base_posix.o
../../third_party/dart/runtime/bin/socket_base_posix.cc:154:12: error: comparison of integers of different signs: 'unsigned long' and 'long' [-Werror,-Wsign-compare]
    cmsg = CMSG_NXTHDR(&msg, cmsg);
           ^~~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/work/engine/ndk/linux/4.0/native/sysroot/usr/include/sys/socket.h:360:44: note: expanded from macro 'CMSG_NXTHDR'
        __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../third_party/dart/runtime/bin/socket_base_posix.cc:160:15: error: comparison of integers of different signs: 'unsigned long' and 'long' [-Werror,-Wsign-compare]
       cmsg = CMSG_NXTHDR(&msg, cmsg), control_message++) {
              ^~~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/work/engine/ndk/linux/4.0/native/sysroot/usr/include/sys/socket.h:360:44: note: expanded from macro 'CMSG_NXTHDR'
        __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../third_party/dart/runtime/bin/socket_base_posix.cc:263:33: error: comparison of integers of different signs: 'unsigned long' and 'long' [-Werror,-Wsign-compare]
         i++, message++, cmsg = CMSG_NXTHDR(&msg, cmsg)) {
                                ^~~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/work/engine/ndk/linux/4.0/native/sysroot/usr/include/sys/socket.h:360:44: note: expanded from macro 'CMSG_NXTHDR'
        __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 errors generated.
[122/8624] CXX obj/flutter/third_party/tonic/file_loader/tonic.file_loader_posix.o
ninja: build stopped: subcommand failed.

解決方案,忽略編譯警告,重新編譯通過修改 /home/ubuntu/work/engine/src/build/config/compiler/BUILD.gn。

# 搜索 default_warning_flags = 修改為下面的代碼
# line 602 603
default_warning_flags = ["-Wno-sign-compare"]
default_warning_flags_cc = ["-Wno-sign-compare"]

編譯成功輸出目錄:

/home/ubuntu/work/engine/src/out/ohos_debug_unopt_arm64
/home/ubuntu/work/engine/src/out/ohos_release_arm64

Flutter SDK 環境和配置Clone SDK

git clone https://gitee.com/openharmony-sig/flutter_flutter

~/.bashrc 完整環境

可以參考下,根據你實際的存放位置修改路徑。

# depot-tools
export PATH="$PATH:/home/ubuntu/work/depot_tools"

# java
export JAVA_HOME=/home/ubuntu/env/jdk-17.0.8
export PATH="$PATH:$JAVA_HOME/bin"

# node.js
export NODE_HOME=/home/ubuntu/env/node-v14.19.1-linux-x64
export PATH="$PATH:$NODE_HOME/bin"

# ohos
export PATH="$PATH:/home/ubuntu/env/oh-command-line-tools/bin"
export OHOS_SDK_HOME=/home/ubuntu/env/ohos-sdk
export OHPM_HOME=/home/ubuntu/env/oh-command-line-tools/ohpm
export SIGN_TOOL_HOME=/home/ubuntu/env/developtools_hapsigner/autosign

# gradle
export GRADLE_HOME=/home/ubuntu/env/gradle-7.1
export PATH="$PATH:$GRADLE_HOME/bin"

# flutter
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH="$PATH:/home/ubuntu/env/flutter_flutter/bin"

# hdc
export HDC_HOME=/home/ubuntu/env/ohos-sdk/10/toolchains
export PATH="$PATH:$HDC_HOME"

環境細節

  • Command Line Tools for OpenHarmony
  • ohcommandline-tools-linux-2.0.0.2.zip
  • use ohos-full-sdk api10
  • ohpm/in/init 安裝 ohpm 如果失敗多嘗試幾次
  • developtools_hapsigner
  • 參照developtools_hapsigner的readme,編譯得到 hap-sign-tool.jar ,確保其在目錄下:./hapsigntool/hap_sign_tool/build/libs/hap-sign-tool.jar(編譯需要 jdk11 + gradle7.1)
  • 進入autosign文件夾,執行命令 chmod 777 *.sh,并且新增 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"
}
  • 編輯 autosign.config 和 createAppCertAndProfile.config,修改值:sign.profile.inFile=profile_tmp.json。
  • 配置 <當前項目flutter_flutter目錄>/bin 到環境變量PATH,確保 which flutter 能找到 <flutter sdk>/bin/flutter 位置
  • 運行 flutter docker,檢查環境變量配置是否都正確。
  • 打開vscode,安裝flutter插件,如果flutter sdk配置正確,可發現OpenHarmony連接設備,可在vscode上運行和調試應用。

補充細節

  • ohos-sdk & hdc,通過 ohsdkmgr 手動下載SDK,添加api10的full-sdk,并配置到環境變量。
  • npm 需要正確配置 .npmrc,否則后續 hvigor 編譯ohos項目會出錯。
touch ~/.npmrc
vim ~/.npmrc
# 寫入如下內容
registry=https://registry.npmjs.org
@ohos:registry=https://repo.harmonyos.com/npm/
# 或者這樣
registry=https://registry.npm.taobao.org
@ohos:registry=https://repo.harmonyos.com/npm/

項目創建編譯等命令

常用命令:

# 環境檢測	
flutter doctor

# 環境配置
flutter config --<key> <value>

# 創建新項目
flutter create --platforms ohos,android --org <org> <appName>

# 已連接設備查找
flutter devices

# 應用安裝
flutter install

# 資源打包
flutter assemble

# 應用構建
flutter build hap --target-platform ohos-arm --debug true --local-engine=<兼容ohos的engine產物路徑>

# 應用運行
flutter run --local-engine=<兼容ohos的engine產物路徑>

# 調試模式
flutter attach

實踐命令(創建項目并打包hap)。

# create
flutter create --platforms ohos,android myapp
cd myapp
# build debug hap
flutter build hap --target-platform ohos-arm64 --debug true --local-engine=/home/ubuntu/work/engine/src/out/ohos_debug_unopt_arm64
# build release hap
flutter build hap --target-platform ohos-arm64 --local-engine=/home/ubuntu/work/engine/src/out/ohos_release_arm64

flutter build hap -h。

Build an Ohos Hap file from your app.

Global options:
-h, --help                  Print this usage information.
-v, --verbose               Noisy logging, including all shell commands executed.
                            If used with "--help", shows hidden options. If used with "flutter doctor", shows additional diagnostic information. (Use "-vv" to force verbose logging in those cases.)
-d, --device-id             Target device id or name (prefixes allowed).
    --version               Reports the version of this tool.
    --suppress-analytics    Suppress analytics reporting when this command runs.

Usage: flutter build hap [arguments]
-h, --help               Print this usage information.
    --target-platform    The target platform for which the app is compiled.
                         [ohos-arm64 (default), ohos-arm, ohos-x86]
    --debug              Build a debug version of your app.
    --profile            Build a version of your app specialized for performance profiling.
    --release            Build a release version of your app (default mode).

hdc找不到已連接設備的解決方案

在Linux下在非root權限下使用hdc會出現無法找到設備的情況,此問題原因為用戶USB操作權限問題,解決方法如下:

sudo chmod -R 777 /dev/bus/usb/

或者su切換到root用戶下運行。

這樣操作之后 hdc list targets 可查看到已連接的OH設備。

文章相關附件可以點擊下面的原文鏈接前往下載:

https://ost.51cto.com/resource/3049

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2011-07-08 16:02:24

iphone

2022-02-25 14:42:09

OpenHarmon環境搭建鴻蒙

2011-08-02 17:37:01

IPhone開發 環境搭建

2021-11-08 07:19:45

鴻蒙HarmonyOS應用

2024-03-26 15:19:36

鴻蒙應用開發開發工具

2012-02-14 09:33:14

Titanium MoTitaniumUbuntu 10.0

2009-12-30 18:02:32

Silverlight

2011-09-13 17:15:58

Eclipse And

2011-09-14 10:52:39

Android 2.2

2011-06-29 10:06:27

Ubuntu 11.0Android

2015-07-23 14:19:51

SSDubuntu開發環境

2023-05-12 14:52:11

鴻蒙操作系統

2023-08-11 14:06:58

鴻蒙Windows

2011-07-22 18:13:59

IOS IDE Xcode

2011-05-24 16:09:57

Androi

2011-08-16 15:41:47

UbuntuPython

2020-12-25 10:52:28

鴻蒙HarmonyOS應用開發

2011-05-18 11:23:47

JSP動態網站

2022-05-30 10:18:41

Ubuntu物聯網

2009-06-29 15:09:00

Java環境搭建Ubuntu
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色大片视频 | 亚洲视频区 | 激情欧美日韩一区二区 | 久久精品国产久精国产 | 日本不卡一区 | 国产毛片视频 | 亚洲免费在线观看 | 欧美一区二区三区视频在线观看 | 成人亚洲性情网站www在线观看 | 99re国产视频 | 天天综合天天 | 国产精品视频免费观看 | 国产98色在线 | 日韩 | www.狠狠操 | 久久国产区 | 精品福利视频一区二区三区 | 97久久精品午夜一区二区 | 福利网站在线观看 | 69堂永久69tangcom | 欧美 日韩 中文 | 国产黄色在线观看 | 一区二区三区在线播放 | 中文字幕日韩欧美一区二区三区 | 一区二区三区免费 | 久久中文字幕在线 | 天天躁日日躁aaaa视频 | 又爽又黄axxx片免费观看 | 精品久久久久一区二区国产 | 国产精品日韩欧美 | 国产精品视频999 | 九九热九九 | 国产精品视频一二三区 | 亚洲国产一区二区三区 | 免费日韩av网站 | 国产精品视频不卡 | 爱爱小视频 | 最新中文字幕在线 | 国产精品中文字幕在线 | 一区二区在线 | 亚洲精品久久久一区二区三区 | 午夜在线视频一区二区三区 |