Flutter Engine编译环境安装

前言

根据设置引擎开发环境的描述,确保有以下可用依赖项:

  • Linux、macOS 或 Windows。
    • Linux 支持 Android 和 Fuchsia 的交叉编译工件,但不支持 iOS。
    • macOS 支持 Android 和 iOS 的交叉编译工件。
    • Windows 不支持任何 Android、Fuchsia 或 iOS 的交叉编译工件。
  • git(用于源代码版本控制)。
  • 一个IDE。另请参阅本页底部的部分,了解有关在编辑引擎时设置语法突出显示的建议。
  • 一个 ssh 客户端(用于通过 GitHub 进行身份验证)。
  • Chromium 的 depot_tools (确保它在你的路径中)。我们使用gclien tdepot_tools 中的工具。
  • Python(被我们许多工具使用,包括gclient)。
  • 在 macOS 和 Linux 上:curl 和 unzip(被gclient sync使用)。
  • 在 Windows 上:
    • Visual Studio 2017 或更高版本(仅非 Google 员工需要)。
    • Windows 10 SDK(仅非 Google 员工需要)。
      • 请务必安装“Windows 调试工具”功能。
  • 在 macOS 上:最新的 Xcode。
  • 推荐给 Google 员工:用于分布式构建的 Goma。该编译页有关于如何设置此详细信息。

不需要安装Dart,因为 Dart 工具链会作为“获取代码”步骤的一部分自动下载。类似的对于 Android SDK,它是通过以下gclient sync步骤下载的。

1 flutter engine

1.1 win10

根据flutter官方的wiki设置引擎开发环境,做好前置工作,主要是depot_tools的安装

depot_tools是Google专门为开发大项目开发的.git代码仓库管理的python脚本,统一管理整个源码仓库的所有依赖,depot_tools使用说明

但是给的链接不能访问,找到以下命令git下载depot_tools,但是这个仍然需要科学上网,这里可以直接看第1.2章

git clone https://chromium.googlesource.com/chromium/tools/depot_tools

用git下载好后,得到depot_tools文件夹,可以将depot_tools路径加到环境变量PATH

Fork https://github.com/flutter/engine到你自己的GitHub帐户

然后创建engine文件夹,在engine文件夹内创建.gclient文件,并且替换<your_name_here>为你的GitHub帐户名

solutions = [
  {
   
   
    "managed": False,
    "name": "src/flutter",
    "url": "git@github.com:<your_name_here>/engine.git",
    "custom_deps": {
   
   },
    "deps_file": "DEPS",
    "safesync_url": "",
    "custom_vars" : {
   
   
      "download_android_deps" : False,
      "download_windows_deps" : False,
    },
  },
]

然后在engine目录执行

../depot_tools/gclient sync

报错如下,这是在win10系统下,这是不能访问服务器导致

Downloading CIPD client for windows-amd64 from https://chrome-infra-packages.appspot.com/client?platform=windows-amd64&version=git_revision:9464003f070813371070f9b8f7c350d87619d145...
Failed to download the file, check your network connection, 使用“2”个参数调用“DownloadFile”时发生异常:“无法连接到远程服务器”
Retrying after a short nap...
Failed to download the file, check your network connection, 使用“2”个参数调用“DownloadFile”时发生异常:“无法连接到远程服务器”
Retrying after a short nap...
Failed to download the file, check your network connection, 使用“2”个参数调用“DownloadFile”时发生异常:“无法连接到远程服务器”
所在位置 D:\depot_tools\.cipd_impl.ps1:112 字符: 5
+     throw "Failed to download the file, check your network connection ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<think>我们面对的问题是在服务器上配置鸿蒙操作系统(HarmonyOS)并搭建Flutter引擎的编译开发环境。这是一个复杂的任务,需要分步骤进行。请注意,鸿蒙系统目前主要支持在物理设备或模拟器上运行,而服务器环境通常是基于x86架构的Linux系统,而鸿蒙系统主要运行在ARM架构上(尤其是OpenHarmony支持多种架构)。因此,我们需要明确: 1. 目标环境:服务器上运行的是Linux(x86或ARM)?如果是x86,我们需要通过模拟或交叉编译的方式来构建ARM架构的鸿蒙应用和Flutter引擎。 2. 鸿蒙系统:我们指的是OpenHarmony(开源版本)还是HarmonyOS(华为的商用版本)?这里我们主要讨论OpenHarmony,因为它是开源的。 3. Flutter引擎:我们需要将Flutter引擎编译成支持OpenHarmony的版本。 由于OpenHarmony本身并不直接提供在服务器上安装的操作系统镜像(它主要面向嵌入式设备和手机等),我们通常是在Linux服务器上搭建OpenHarmony的编译环境,用于交叉编译出OpenHarmony系统镜像和应用程序。同时,我们需要为Flutter引擎添加OpenHarmony的支持并进行编译。 步骤概览: 1. 准备服务器环境:确保服务器是Linux(推荐Ubuntu 20.04或类似版本),并安装必要的依赖。 2. 获取OpenHarmony源代码并搭建编译环境。 3. 为Flutter引擎添加OpenHarmony支持(可能需要修改Flutter引擎代码)。 4. 编译Flutter引擎,生成OpenHarmony平台可用的库。 5. 使用编译好的Flutter引擎构建Flutter应用并运行在OpenHarmony设备或模拟器上。 详细步骤: ### 1. 准备服务器环境 首先,确保服务器是64位Linux系统(如Ubuntu 20.04),并安装以下依赖: ```bash sudo apt update sudo apt install -y git curl python3.8 python3-pip gcc g++ make bison flex texinfo libgmp-dev libmpc-dev libmpfr-dev libexpat-dev libssl-dev libncurses-dev libffi-dev zlib1g-dev libelf-dev libtool ``` 安装Node.js(用于部分构建工具): ```bash curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt install -y nodejs ``` 安装hb(OpenHarmony的构建工具): ```bash pip3 install --user ohos-build ``` 将hb工具路径添加到环境变量(假设用户目录为`~`): ```bash echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc source ~/.bashrc ``` ### 2. 获取OpenHarmony源代码并编译 参考OpenHarmony官方文档(以OpenHarmony 3.2 Beta为例): ```bash mkdir openharmony cd openharmony repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-3.2-Beta --no-repo-verify repo sync -c repo forall -c 'git lfs pull' ``` 然后,配置编译环境(以标准系统为例,如rk3568开发板): ```bash ./build/prebuilts_download.sh hb set # 在出现的界面中选择目标平台,例如:standard hb build ``` 编译过程可能需要较长时间,编译完成后会生成镜像文件,可以烧录到开发板上。 ### 3. 为Flutter引擎添加OpenHarmony支持 Flutter官方尚未支持OpenHarmony,因此需要社区或自行添加支持。目前已有一些开源项目(如[OpenHarmony-SIG/flutter_engine](https://gitee.com/openharmony-sig/flutter_engine))在尝试适配。 步骤: - 克隆Flutter引擎源码(注意分支,例如对应Flutter 3.0的引擎): ```bash git clone https://github.com/flutter/engine.git cd engine git checkout <对应分支> ``` - 应用OpenHarmony支持的补丁(如果有现成的适配项目,可以参考其步骤)。 - 如果没有现成的适配,需要自行修改引擎代码,包括: - 添加OpenHarmony作为目标平台(修改构建系统,添加TOOLCHAIN等)。 - 适配Dart VM在OpenHarmony上的运行。 - 适配Skia图形库在OpenHarmony上的渲染后端(如使用EGL)。 - 适配平台插件(如文本输入、窗口管理、事件等)。 这是一个复杂的过程,需要深入了解Flutter引擎和OpenHarmony系统。 ### 4. 编译Flutter引擎 在修改好引擎代码后,进行编译。编译Flutter引擎需要安装必要的依赖和工具(如depot_tools)。 安装depot_tools: ```bash git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH="$PATH:$(pwd)/depot_tools" ``` 生成构建配置(以release模式为例): ```bash ./tools/gn --runtime-mode=release --target-os=ohos --arm-float-abi=hard --target-cpu=arm --ohos-api-level=8 --ohos-ndk-path=<OpenHarmony SDK路径> --ohos-sysroot=<OpenHarmony SDK中的sysroot路径> ``` 然后进行编译: ```bash ninja -C out/ohos_release ``` 编译成功后,会生成`libflutter.so`等库文件。 ### 5. 使用编译好的Flutter引擎构建Flutter应用 在Flutter应用中,需要指定使用我们编译的引擎。可以通过设置环境变量: ```bash export FLUTTER_ENGINE=<引擎路径>/src export FLUTTER_ROOT=<Flutter SDK路径> ``` 然后,在Flutter项目中,运行: ```bash flutter run --local-engine=ohos_release ``` 注意:这需要Flutter工具链支持OpenHarmony目标。因此,可能还需要修改Flutter工具(`flutter_tools`)以添加OpenHarmony平台。 ### 注意事项 - 整个过程非常复杂,且OpenHarmony和Flutter都在不断更新,可能遇到各种问题。 - 目前社区对Flutter在OpenHarmony上的支持尚不完善,建议关注开源社区(如Gitee上的OpenHarmony-SIG)的最新进展。 - 如果只是想在OpenHarmony上运行Flutter应用,也可以考虑使用已经适配好的第三方解决方案(如[arkui_flutter](https://gitee.com/openharmony-sig/arkui_flutter)),它们提供了预编译的引擎和修改过的Flutter工具链。 ### 引用说明 [^1]: Flutter是由Google开发的开源UI工具包,支持跨平台应用开发。在OpenHarmony上运行Flutter应用需要将Flutter引擎适配到OpenHarmony系统。 [^2]: 日志展示了在鸿蒙设备上安装和运行应用的命令,这些命令对于调试在OpenHarmony上运行的Flutter应用可能有参考价值。 §§相关问题§§ 1. 如何为OpenHarmony交叉编译Flutter引擎? 2. 在OpenHarmony上运行Flutter应用需要哪些步骤? 3. 如何解决在OpenHarmony上编译Flutter引擎时遇到的依赖问题?</think>### 在服务器上配置鸿蒙系统并搭建 Flutter 引擎编译环境 #### 1. **准备鸿蒙开发环境** - **安装依赖工具** 在 Linux 服务器(推荐 Ubuntu 20.04+)安装基础编译工具: ```bash sudo apt update sudo apt install git python3.8 python3-pip curl openjdk-11-jdk pip3 install setuptools ``` - **配置鸿蒙编译工具(hb)** 安装鸿蒙专用构建工具: ```bash pip3 install ohos-build echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc source ~/.bashrc ``` #### 2. **获取鸿蒙源代码** - **下载 OpenHarmony 源码**(以 3.2 Release 为例): ```bash repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-3.2-Release repo sync -c repo forall -c 'git lfs pull' ``` - **配置设备树**(以模拟器为例): ```bash ./build/prebuilts_download.sh hb set # 选择 `product` -> `qemu-mini-system-demo` ``` #### 3. **编译鸿蒙系统镜像** ```bash hb build # 生成镜像在 out/ohos-arm-release/packages/phone/images/ ``` 编译完成后可通过 QEMU 启动验证: ```bash ./qemu-run -b # 启动鸿蒙模拟器[^1] ``` #### 4. **搭建 Flutter 引擎编译环境** - **安装 Flutter SDK**: ```bash git clone https://github.com/flutter/flutter.git -b stable echo 'export PATH="$PATH:$(pwd)/flutter/bin"' >> ~/.bashrc source ~/.bashrc flutter doctor ``` - **配置鸿蒙平台支持**: 修改 Flutter 引擎代码支持鸿蒙: ```bash cd engine/src git apply ohos_support.patch # 需社区提供的鸿蒙适配补丁 ``` - **编译 Flutter 引擎**: ```bash ./flutter/tools/gn --runtime-mode=release --target-os=ohos --ohos-api-level=8 ninja -C out/ohos_release ``` #### 5. **集成 Flutter 应用到鸿蒙** - **创建 Flutter 鸿蒙项目**: ```dart flutter create --platforms=ohos my_app cd my_app ``` - **构建鸿蒙 HAP 安装包**: ```bash flutter build ohos --target-platform=arm64 ``` - **部署到鸿蒙设备**: ```bash hdc file send build/ohos/release/entry-debug-unsigned.hap /sdcard/ hdc shell bm install -p /sdcard/entry-debug-unsigned.hap # 安装应用[^2] ``` ### 关键注意事项 1. **架构兼容性** 服务器需为 ARM64 架构(或使用交叉编译),x86 服务器需配置 QEMU 虚拟化: ```bash sudo apt install qemu-system-arm ``` 2. **依赖冲突解决** 若遇 Python 版本冲突,使用 `update-alternatives` 管理多版本: ```bash sudo update-alternatives --config python3 ``` 3. **社区资源参考** - OpenHarmony SIG 的 Flutter 适配项目:[gitee.com/openharmony-sig/flutter_engine](https://gitee.com/openharmony-sig/flutter_engine) - 鸿蒙 Flutter 插件模板:[ohos_flutter](https://gitee.com/openharmony-sig/ohos_flutter) ### 验证环境 ```mermaid graph LR A[Ubuntu Server] --> B[OpenHarmony 3.2] B --> C[Flutter Engine] C --> D[QEMU/Real Device] D --> E[Flutter App on HarmonyOS] ``` > **提示**:首次编译 Flutter 引擎需 2-4 小时,建议使用 >=32GB RAM 服务器。完整流程需社区补丁支持,持续关注 [OpenHarmony SIG](https://gitee.com/openharmony-sig) 更新。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值