Flutter圈子

Flutter engine构建

2018-10-17  本文已影响45人  sssong_2017

在Flutter官方只提供了4中CPU架构的so库,armeabi-v7a、arm64-v8a、x86和x86-64,其中x86系列只支持Debug模式,没有提供armeabi架构的库,在目前多数app使用的大量sdk都只提供了armeabi架构的库,因此开发者想到的一种方案是对engine进行修改构建。

准备工作:

操作系统,IDE,git等这些就不说了,重点安装下depot_tools(git的扩展)

以mac为例:

下载

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

配置depot_tools环境变量 

$ export PATH=$PATH:/你的下载目录/depot_tools

获取源码和配置环境

1  新建文件目录,建议命名engine,在engine目录下创建 .gclient文件,如下配置编辑到.gclient里

其中<your_name_here> 用你的 GitHub账号名称

2  cd engine

3  gclient sync (这个命令获取flutter依赖的源码,它会自动运行git clone和其他命令)

4  cd src/flutter(其中src/flutter文件是通过gclient syn命令生成的)

5  git remote add upstream git@github.com:flutter/engine.git

6 cd ..

7 brew install ant 

构建和运行代码

Android (cross-compiling交叉编译)

以下命名没有特别说明 当前目录是src

1 git pull upstream master ( 进入src/flutter更新flutter engine)

2 gclinet sync

3 准备构建文件

./flutter/tools/gn --android --unoptimized   (为device-side executables)

./flutter/tools/gn --android --android-cpu x86 --unoptimized     (为 x86模拟器)

./flutter/tools/gn --android --android-cpu x64 --unoptimized ( 为x64 模拟器)

./flutter/tools/gn --unoptimized (为host-side executables)

4 构建可执行文件

ninja -C out/android_debug_unopt   (为device-side executables)

ninja -C out/android_debug_unopt_x86(为 x86模拟器)

ninja -C out/android_debug_unopt_x64 ( 为x64 模拟器)

ninja -C out/host_debug_unopt (为host-side executables)

这些命令可以组合,比如 ninja -C out/android_debug_unopt && ninja -C out/host_debug_unopt

编译完成后可以在 out/android_debug_unopt 一系列目录下找到 flutter.jar文件

修改源码构建支持arm架构参考 https://github.com/flutter/engine/wiki/Android-Builds-Supporting-armeabi

官方文章:https://github.com/flutter/engine/blob/master/CONTRIBUTING.md

上一篇下一篇

猜你喜欢

热点阅读