第1节:iOS项目集成Flutter高级

[TOC]

前言

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

一、官网的混编方式分析

1、Podfile

1
2
3
#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_tools

Flutter SDK中的podhelper.rb

在项目中的路径为:

项目中的podhelper.rb

2.2、podhelper.rb处理的事情

podhelper.rb的内容1

事情①:获取Flutter.podspecFlutterPluginRegistrant.podspec,然后pod

获取Flutter.podspec

image-20190310171127737

获取FlutterPluginRegistrant.podspec

image-20190310171011325

情况1问题:如果engine文件夹不存在,即不存在我们需要的Flutter.podspecFlutter.framework

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

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

image-20190310174505419

情况1解决:获取flutter sdk的根目录flutter_root_dir

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

image-20190310181117074

获取的方法为:

1
flutter_root_dir = flutter_root(flutter_application_path)

该flutter_root函数的方法为:

podhelper.rb的内容2

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

podhelper.rb的内容3

3、xcode_backend.sh

3.1、xcode_backend.sh的位置

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

Flutter SDK中的xcode_backend.sh