前言

Flutter和iOS支持两种形式的混编,一种是某一些页面全是用flutter去绘制,另外一只是flutter页面作为iOS某个控制器页面的一部分去展示,后面会逐步去介绍这两种方式的实现

本篇文章主要介绍在iOS项目中添加Futter模块

1、如果你还没开始在macOS上搭建Flutter开发环境可以参考官方文档:入门: 在macOS上搭建Flutter开发环境。

2、在flutter和iOS混编过程中我们需要用到Android Studio或者Visual Studio Code 来编写dart相关的代码及第三方库的管理,具体的配置步骤可以参考官方文档: 配置编辑器。

3、如果你对flutter和iOS的区别还不是很了解可以先了解下官方文档 Flutter for iOS 开发者。

一、创建Xcode项目

用Xcode创建一个iOS项目命名为Flutter_iOS

f2ca1b27bce7

iOS项目.png

然后cd到项目的根目录Flutter_iOS

执行命令 flutter create -t module my_flutter

f2ca1b27bce7

创建flutter模块.png

二、将 Flutter 模块以 pods 的方式加入到已有项目中

在我们的已有项目 Flutter_iOS 中初始化 pods ,如果你的项目中已初始化过 pods ,请忽略。

cd 项目根目录

pod init

这时我们项目中会多一个 Podfile 文件,我们在该文件最后面添加命令如下:

vim podfile

target 'Flutter_iOS' do

# Uncomment the next line if you're using Swift or would like to use dynamic frameworks

# use_frameworks!

# Pods for Flutter_iOS

end

# 新加命令

flutter_application_path = '../flutter_module'

eval(File.read(File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)

注意:flutter_application_path 是 Flutter 模块的路径,记得修改为你的模块名称。

添加后保存退出,运行命令

pod install

三、配置 Dart 编译脚本

Xcode->Build Phases ->点击左上角➕号按钮->选择 New Run Script Phase ,添加如下脚本:

"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build

"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed

四、设置BitCode

Flutter 目前还不支持 BitCode,点击将我们项目 BitCode 选项设置为 NO

Xcode->Build Settings ->Build Options->将BitCode 选项设置为 NO

五、添加跳转代码

使用 FlutterViewController

所有的 Flutter 页面公用一个Flutter实例 (FlutterViewController) 。

#import "ViewController.h"

#import

#import

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view.

}

- (IBAction)pushToFlutterVC:(UIButton *)sender

{

FlutterViewController *flutterVC = [[FlutterViewController alloc] init];

[self presentViewController:flutterVC animated:YES completion:nil];

}

@end

六、运行和热更新

项目可以在Android Studio上进行dart相关语言的编写,但是需要使用Xcode运行整个项目的代码

混编后原先的热更新不能用,但是我们可以通过如下方式实现:

首先退出模拟器上运行的项目

cd到flutter_module工程路径,执行

flutter attach

attach成功之后,运行xcode,更新直接press 'r'

在Android Studio中修改dart文件,press 'r'直接可以看到修改之后的显示

dart和python混编,Flutter与iOS混编(一)相关推荐

  1. [深入浅出Cocoa]iOS网络编程之NSStream

    2019独角兽企业重金招聘Python工程师标准>>> [深入浅出Cocoa]iOS网络编程之NSStream 目录(?)[+] [深入浅出Cocoa]iOS网络编程之NSStrea ...

  2. flutter和Android混编下出现“No implementation found for method xxxx on channel”错误

    flutter和Android混编下出现"No implementation found for method xxxx on channel"错误 这个错误出现的原因是Plugi ...

  3. Flutter Android/iOS包大小分析

    作者:腾讯 - 小德(任晓帅 koudleren) 前言 Flutter几乎从一开始就被人诟病SDK的包太大,真的是这样子吗? 1. Flutter 构建产物分析 分析Flutter的构建产物,发现一 ...

  4. flutter在IOS上的登录实现——QQ登录、微信登录、自动识别手机号一键登录、apple登录

    flutter在IOS上的登录实现--QQ登录.微信登录.自动识别手机号一键登录.apple登录 一.QQ登录 使用的第三方库: 具体操作方法: 1.配置 Universal Links 2.QQ互联 ...

  5. Flutter开发IOS,上架AppStore的全部流程以及常遇到的坑

    Flutter开发IOS,上架AppStore的全部流程以及常遇到的坑 本次开发采用的Flutter技术进行开发,没想到会这么快,昨天提交的,今天便已上架appstroe,所以这次来做一次总结,总结从 ...

  6. 若依APP 一个非常火的java框架做个APP,若依Flutter安卓IOS桌面前端,若依安卓APP、若依苹果IOS APP、若依Linux APP、若依 MAC APP、若依 Windows APP

    在若依官网看了介绍,框架使用了最新技术栈.前后端分离.完全响应式布局.代码生成器......,似乎已经完美..... 若依这个框架在java非常火,后端和前端的技术非常先进,发现缺少一个原生APP,经 ...

  7. Flutter 搭建 iOS 命令行服务打包发布全保姆式流程

    theme: smartblue 在以前的 < Android 和 iOS 打包提交审核指南> 里介绍了 Flutter 下打包 Android 和 iOS 的指南,不过这部分内容主要介绍 ...

  8. windows下Android Studio开发flutter打包iOS

    mac环境 1.把整个项目都拷贝过来 是否需要?除了ios目录,会用到ios之外的隐藏文件夹 .dart_tool 貌似还会用到dart文件 2.拷贝过来,进入ios目录,运行Runner.xcwor ...

  9. iOS网络编程之Socket

    [深入浅出Cocoa]iOS网络编程之Socket 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 更多 Cocoa 开发文章,敬请访问<深入浅 ...

最新文章

  1. Eclipse 官宣,要干掉 VS Code,你怎么看?
  2. 人工智能浪潮下的语音交互——VUI设计(基础篇)
  3. DIV + CSS 神话
  4. POJ - 3700 Missile Defence System.(dfs+最优性剪枝)
  5. php yii2 finfo file,FileHelper:文件系统助手
  6. python操作mysql数据库(增、删、改、查)_python对 MySQL 数据库进行增删改查的脚本...
  7. Ubuntu下安装opencv3.4.6+opencv_contrib
  8. [android] 切换界面的通用处理
  9. 第二百一十六节,jQuery EasyUI,Spinner(微调)组件
  10. 选PMP培训机构看什么
  11. 51单片机系列--蜂鸣器
  12. Centos6.3 安装rhythmbox播放器
  13. 在VIVADO上实现的非常简易的RISC-V CPU设计(来自《Verilog数字系统设计》夏宇闻著)
  14. 零基础转行IT学习什么好?
  15. 在Linux终端命令行下播放音乐的命令
  16. win7官方原版iso镜像_官方原版下载!Windows 10 v1909简体中文ISO镜像
  17. 保研边缘人的夏令营之旅~
  18. 【Neo4j】第 5 章:空间数据
  19. Azure 开发者新闻快讯丨开发者8月大事记一览
  20. 4. Java 哪个常量不可以直接输出?

热门文章

  1. 掌握ADO.NET的十个热门技巧
  2. 惊了!Chrome浏览器竟然自带的一款恐龙游戏【免下载】
  3. SpringBoot集成Spring Security —— 第二章自动登录
  4. reactjs创建虚拟DOM的两种方式:使用jsx和js创建虚拟DOM
  5. linux fedora安装、运行mybase7.3.5报错:error while loading shared libraries: libpng12.so.0
  6. Linkis EngineConnPlugin引擎插件安装文档
  7. 【人工智能作业及答案】什么叫智能?什么叫人工智能?人工智能科学体系大致分哪几个层次?
  8. GeosparkViz 可视化
  9. Spring AOP编程-aspectJ通知类型-6大通知
  10. Spring IOC快速入门