Flutter原理:官网的混编方式分析

前言

要想知道怎么去高级的进行混编,那么久需要你首先对官网的混编方式进行分析。所以,下面我们先对官网的混编方式进行分析,然后在进行正式的高级混编。

一、官网的混编方式分析

1、Podfile

#Flutter项目路径
flutter_application_path = "../../cj_nativeflutter_fluttermodule"
eval(File.read(File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)

2、podhelper.rb

2.1、podhelper.rb的位置

podhelper.rb在flutter SDK中的路径为:/Applications/flutter/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl

Flutter原理:官网的混编方式分析_第1张图片
iOS项目集成Flutter高级_flutter_tools.png
Flutter原理:官网的混编方式分析_第2张图片
iOS项目集成Flutter高级_podhelper1.png

在项目中的路径为:

Flutter原理:官网的混编方式分析_第3张图片
iOS项目集成Flutter高级1.png

2.2、podhelper.rb处理的事情

Flutter原理:官网的混编方式分析_第4张图片
iOS项目集成Flutter高级4.png
事情①:获取Flutter.podspecFlutterPluginRegistrant.podspec,然后pod

获取Flutter.podspec

Flutter原理:官网的混编方式分析_第5张图片
iOS项目集成Flutter高级2.png

获取FlutterPluginRegistrant.podspec

Flutter原理:官网的混编方式分析_第6张图片
iOS项目集成Flutter高级3.png
情况1问题:如果engine文件夹不存在,即不存在我们需要的Flutter.podspecFlutter.framework

如果engine文件夹不存在,即不存在我们需要的Flutter.podspecFlutter.framework,则我们需要从flutter sdk中的如下目录拷贝Flutter.podspecFlutter.framework,那么Flutter SDK的根目录从哪里找呢?

/Applications/flutter/bin/cache/artifacts/engine/ios/

Flutter原理:官网的混编方式分析_第7张图片
iOS项目集成Flutter高级5.png
情况1解决:获取flutter sdk的根目录flutter_root_dir

而这个flutter sdk目录flutter_root_dir的获取,我们只需要从根据flutter_application_path路径下的Generated.xcconfig文件中的FLUTTER_ROOT获取即可。

Flutter原理:官网的混编方式分析_第8张图片
iOS项目集成Flutter高级6.png

获取的方法为:

flutter_root_dir = flutter_root(flutter_application_path)

该flutter_root函数的方法为:

Flutter原理:官网的混编方式分析_第9张图片
iOS项目集成Flutter高级7.png

Generated.xcconfig数组的获取方法为:

Flutter原理:官网的混编方式分析_第10张图片
iOS项目集成Flutter高级8.png

3、xcode_backend.sh

3.1、xcode_backend.sh的位置

xcode_backend.sh的目录为/Applications/flutter/packages/flutter_tools/bin/

Flutter原理:官网的混编方式分析_第11张图片
iOS项目集成Flutter高级_sh1.png

未完待续

你可能感兴趣的:(Flutter原理:官网的混编方式分析)