dart和python混编,Flutter与iOS混编(一)
前言
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
iOS项目.png
然后cd到项目的根目录Flutter_iOS
执行命令 flutter create -t module my_flutter
创建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混编(一)相关推荐
- [深入浅出Cocoa]iOS网络编程之NSStream
2019独角兽企业重金招聘Python工程师标准>>> [深入浅出Cocoa]iOS网络编程之NSStream 目录(?)[+] [深入浅出Cocoa]iOS网络编程之NSStrea ...
- flutter和Android混编下出现“No implementation found for method xxxx on channel”错误
flutter和Android混编下出现"No implementation found for method xxxx on channel"错误 这个错误出现的原因是Plugi ...
- Flutter Android/iOS包大小分析
作者:腾讯 - 小德(任晓帅 koudleren) 前言 Flutter几乎从一开始就被人诟病SDK的包太大,真的是这样子吗? 1. Flutter 构建产物分析 分析Flutter的构建产物,发现一 ...
- flutter在IOS上的登录实现——QQ登录、微信登录、自动识别手机号一键登录、apple登录
flutter在IOS上的登录实现--QQ登录.微信登录.自动识别手机号一键登录.apple登录 一.QQ登录 使用的第三方库: 具体操作方法: 1.配置 Universal Links 2.QQ互联 ...
- Flutter开发IOS,上架AppStore的全部流程以及常遇到的坑
Flutter开发IOS,上架AppStore的全部流程以及常遇到的坑 本次开发采用的Flutter技术进行开发,没想到会这么快,昨天提交的,今天便已上架appstroe,所以这次来做一次总结,总结从 ...
- 若依APP 一个非常火的java框架做个APP,若依Flutter安卓IOS桌面前端,若依安卓APP、若依苹果IOS APP、若依Linux APP、若依 MAC APP、若依 Windows APP
在若依官网看了介绍,框架使用了最新技术栈.前后端分离.完全响应式布局.代码生成器......,似乎已经完美..... 若依这个框架在java非常火,后端和前端的技术非常先进,发现缺少一个原生APP,经 ...
- Flutter 搭建 iOS 命令行服务打包发布全保姆式流程
theme: smartblue 在以前的 < Android 和 iOS 打包提交审核指南> 里介绍了 Flutter 下打包 Android 和 iOS 的指南,不过这部分内容主要介绍 ...
- windows下Android Studio开发flutter打包iOS
mac环境 1.把整个项目都拷贝过来 是否需要?除了ios目录,会用到ios之外的隐藏文件夹 .dart_tool 貌似还会用到dart文件 2.拷贝过来,进入ios目录,运行Runner.xcwor ...
- iOS网络编程之Socket
[深入浅出Cocoa]iOS网络编程之Socket 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 更多 Cocoa 开发文章,敬请访问<深入浅 ...
最新文章
- Eclipse 官宣,要干掉 VS Code,你怎么看?
- 人工智能浪潮下的语音交互——VUI设计(基础篇)
- DIV + CSS 神话
- POJ - 3700 Missile Defence System.(dfs+最优性剪枝)
- php yii2 finfo file,FileHelper:文件系统助手
- python操作mysql数据库(增、删、改、查)_python对 MySQL 数据库进行增删改查的脚本...
- Ubuntu下安装opencv3.4.6+opencv_contrib
- [android] 切换界面的通用处理
- 第二百一十六节,jQuery EasyUI,Spinner(微调)组件
- 选PMP培训机构看什么
- 51单片机系列--蜂鸣器
- Centos6.3 安装rhythmbox播放器
- 在VIVADO上实现的非常简易的RISC-V CPU设计(来自《Verilog数字系统设计》夏宇闻著)
- 零基础转行IT学习什么好?
- 在Linux终端命令行下播放音乐的命令
- win7官方原版iso镜像_官方原版下载!Windows 10 v1909简体中文ISO镜像
- 保研边缘人的夏令营之旅~
- 【Neo4j】第 5 章:空间数据
- Azure 开发者新闻快讯丨开发者8月大事记一览
- 4. Java 哪个常量不可以直接输出?
热门文章
- 掌握ADO.NET的十个热门技巧
- 惊了!Chrome浏览器竟然自带的一款恐龙游戏【免下载】
- SpringBoot集成Spring Security —— 第二章自动登录
- reactjs创建虚拟DOM的两种方式:使用jsx和js创建虚拟DOM
- linux fedora安装、运行mybase7.3.5报错:error while loading shared libraries: libpng12.so.0
- Linkis EngineConnPlugin引擎插件安装文档
- 【人工智能作业及答案】什么叫智能?什么叫人工智能?人工智能科学体系大致分哪几个层次?
- GeosparkViz 可视化
- Spring AOP编程-aspectJ通知类型-6大通知
- Spring IOC快速入门