如何在已有的iOS工程中添加Flutter工程

一、创建flutter module

在开始嵌入flutter之前,首先需要创建flutter工程,但请注意,这里创建的是flutter module工程,有两种方式创建:

1.使用命令行:flutter create -t module xxx

此命令会创建一个包含Android library 和CocoaPods pod的flutter工程,供原生应用使用。需要注意的是,不管是用命令行还是使用AS创建flutter module,都需要保证创建的flutter工程和原生应用在同一目录下。假如你在some/path/MyApp存在一个iOS原生应用,要创建flutter工程:

cd some/path/

flutter create -t module my_flutter

这会创建在这个位置some/path/my_flutter/创建一个flutter module,里面包含基础的dart代码,以及一个.ios/的隐藏文件,其中包含Cocoapods和helper Ruby script。

二、添加原生app对flutter的依赖

现在假设你的目录结构如下:

  my_flutter/

    lib/main.dart

    .ios/

  MyApp/

      AppDelegate.h

      AppDelegate.m (or swift)

我们需要使用iOS中的Cocoapods来添加flutter framework的依赖,因为在my_flutter工程中包含的任何flutter plugin也需要使用这个flutter framework。

如果你的项目中已经在使用CocoaPods,可以直接按照以下的步骤进行配置,

1.添加以下内容到Podfile中:

flutter_application_path='path/to/my_flutter/'load File.join(flutter_application_path,'.ios','Flutter','podhelper.rb')


2.每一个Xcode target都需要绑定flutter,调用install_all_flutter_pods(flutter_application_path)

target 'MyApp' do

install_all_flutter_pods(flutter_application_path)

end

target 'MyAppTests' do

install_all_flutter_pods(flutter_application_path)

end

3.命令行执行 pod install

任何时候,如果你修改了flutter工程中some/path/my_flutter/pubspec.yaml中的三方依赖,在flutter工程所在目录,都需要执行flutter packages get来更新从podhelper.rb脚本中读取的plugins列表,然后在app所在目录执行pod install

这个podhelper.rb脚本是干嘛使得呢?它可以确保你所有的plugins,Flutter.framework还有App.framework都会被绑定在你的原生项目中。

4.由于flutter工程不支持bitcode,所以需要在xcode中设置Build Settings->Build Options->Enable Bitcode为NO。

好了,做完了上面所有的工作,如无意外,我们原生项目中集成flutter的工作就做完了,接下来就可以愉快的进行混合开发了。

你可能感兴趣的:(如何在已有的iOS工程中添加Flutter工程)