iOS现有项目集成flutter的步骤以及踩坑分享

467 阅读2分钟

前段时间有机会将flutter集成到一个新项目中,目前只改了一个静态的设置页,虽然flutter部分的功能简单,但是还是遇到了一些问题,记录一下,希望能帮到一些掉到坑里的朋友。

环境搭建

  • 下载flutter sdk,解压后拷贝到指定路径(这里的路径很重要,之后需要在XCode项目配置里面用到)

  • 配置flutter环境变量在~/.bash_profile(参考下面三行,可直接复制过去,但是需要改PATH为flutter sdk所在的路径),根目录下没有的bash_profile的话自己创建一个

    export PUB_HOSTED_URL=https://pub.flutter-io.cn
    export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
    export PATH=/Developer/flutter/bin:$PATH
    

    配置好之后执行一下source ~/.bash_profile就可以执行flutter命令了

  • 执行flutter doctor根据提示解决还未完成的操作(Xcode,Android studio以及相应的flutter和dart插件等)

集成步骤

我采用的是cocoapods管理的方式

  1. cd到当前项目平级目录下,执行下面的创建命令(注意:flutter_module为flutter模块名,可自定义,并且要以小写单词和_相连,否则创建不成功)

    flutter create -t module flutter_module
    
  2. 在podfile文件里加入一下三行命令

    flutter_application_path = '../flutter_module' (这里注意路径)  
    load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
    install_all_flutter_pods(flutter_application_path)
    
  3. pod install之后再Targets添加一个Run Script,内容如下

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

    添加完之后几个勾选

  4. 创建一个config文件夹后添加3个config:Flutter.xcconfig, Debug.xcconfig,Release.xcconfig 在Flutter.xcconfig文件中写入:

    #include "../../../flutter_module/.ios/Flutter/Generated.xcconfig" ENABLE_BITCODE=NO

    在Debug.xcconfig文件中写入:

    #include "Flutter.xcconfig"

    在Release.xcconfig文件中写入:

    #include "Flutter.xcconfig"
    FLUTTER_BUILD_MODE=release
    

以上4个步骤操作完毕之后flutter环境就搭建好了,可以run一下代码看看有没有报错,没问题的话就可以开始写代码了。

FAQ

  • 编译的时候会报错:Command PhaseScriptExecution failed with a nonzero exit code

    解决方案:script配置完之后记得勾选上Run script only when installing,
    
  • 13.3.1及以上真机运行崩溃

    这是flutter的bug

    给不想跳转的朋友摘录一下里面的解决方案

    You can:
    1. Use a non-Personal Team provisioning profile.
    2. Run on the 13.3.1 simulator.
    3. Test on a real iOS device running 13.3 or lower.
    简单翻译一下就是使用非个人的开发者账号的证书跑真机,或者用模拟器跑13.3.1以上的版本,或
    者用13.3及以下的真机跑
    
  • mac10.15及以上系统版本终端每次都需要输入source ~/.bash_profile

因为mac10.15以后系统使用 zsh 作为默认登录 Shell 和交互式 Shell 复制~/.bash_profile的内容到~/.zshrc即可,执行一下source ~/.zshrc即可 ```

  • 团队其他成员或者换了环境之后拉取代码后无法pod install的问题
    需要在flutter_module文件夹的路径等下执行 flutter pub get更新一下flutter依赖,再去ios项目目录下执行pod install
    

参考资料

转载请注明出处