flutter和ios混编

1、xcode创建项目

2、安装cocoapods

3、项目命令行下执行pod init

4、项目命令行下执行pod install

5、用wordspace重新打开项目

6、podfile文件里添加一下代码

flutter_application_path = '../flutter_module/'

load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')

 

然后再准备运行的target里添加

install_all_flutter_pods(flutter_application_path)

 

例如

target 'HelloHybirdiOS' do

  # Comment the next line if you don't want to use dynamic frameworks

#  use_frameworks!

 

  # Pods for HelloHybirdiOS

  install_all_flutter_pods(flutter_application_path)

7、再次执行pod install

8、禁用bitcode

build settings里搜索bitcode,然后关闭

9、添加script

在build phases在新建run script,添加以下代码

"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" buiObject-cld

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

把show environment和run script only when installing都勾上

把Run Script移动到Dependencies后面

10、build settings 里的user-defined增加一项,配置flutter目录

FLUTTER_ROOT     /Users/你的名字/Desktop/Flutter/flutter

11、xcode里build,build xcode,不报错说明环境配置好了如果出现一下错误

Command PhaseScriptExecution failed with a nonzero exit code

修改workspace setting环境,参考https://blog.csdn.net/dt1991524/article/details/85339816

 

 

12、注意

每次在flutter里修改pubspec.yaml时,执行完flutter packages get之后,都需要执行pod install

 

遇到/Frameworks/Flutter.framework: Permission denied,需要把flutter更新到1.10.x的版本

参考https://blog.csdn.net/u010809694/article/details/100779247

 

13、在ios上热重载

关闭app

进入flutter项目命令行执行flutter attach

等命令行出现Waiting for a connection from Flutter on Android SDK built for x86...

打开flutter编写的页面,命令行会出现

Syncing files to device Android SDK built for x86...                    
 2,707ms (!)                                       

 To hot reload changes while running, press "r". To hot restart (and rebuild state), press "R".
An Observatory debugger and profiler on Android SDK built for x86 is available at: http://127.0.0.1:61581/06WC6YnSW2w=/
For a more detailed help message, press "h". To detach, press "d"; to quit, press "q".
 

此时修改flutter代码

然后命令行输入r,就可以看到代码热重载了

命令行输入R,表示热重启

 

 

你可能感兴趣的:(Flutter)