美文网首页flutter
Flutter—原有项目集成Flutter

Flutter—原有项目集成Flutter

作者: Louis_dm | 来源:发表于2019-12-05 22:23 被阅读0次

    这里有两种集成方式:

    方式一

    优点:该方案遵循flutter官方建议,规范性不言而喻

    缺点: 此方案对团队开发不是很友好,需要求每名开发同学的电脑上都要配>置flutter环境。并且 iOS端开发与flutter端开发在代码纠缠性上会变得复杂化

    主要过程:

    cd 进入项目根目录上一层
    
    flutter create -t module flutter_module
    
    cd ./flutter_module
    
    flutter build ios
    

    Podfile文件修改:

    # flutter混编配置
    flutter_application_path = '../flutter_module/'
    load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
    
    target 'XXXAPP' do
       use_frameworks!
     
       # flutter混编配置
       install_all_flutter_pods(flutter_application_path)
    

    end

    cd .. 
    
    pod install
    

    当您更改扑插件的依赖关系some/path/my_flutter/pubspec.yaml,你需要运行flutter pub get从some/path/my_flutter刷新列表插件读取的podhelper.rb脚本。然后pod install从再次 运行some/path/MyApp。
    该podhelper.rb脚本将确保您的插件Flutter.framework和App.framework嵌入在您的项目中。

    遇到的一些坑:

    错误一:Command PhaseScriptExecution failed with a nonzero exit code

    解决方法:xcode菜单file->Workspace Settings->Build System 选择Legacy Build System

    错误二:x’x’x/Flutter.framework: Permission denied

    解决方法:修改 $FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh 144Line

    RunCommand find "${derived_dir}/engine/Flutter.framework" -type f -exec chmod a-w "{}" \;
    改成
    RunCommand find "${derived_dir}/engine/Flutter.framework" -type f -iname '.h' -exec chmod a-w "{}" \;
    

    错误三:dyld: dyld cache load error: shared cache file open() failed
    dyld: Library not loaded: @rpath/App.framework/App

    模拟器无法运行 要用真机跑release模式

    方式二

    优点: 对 Flutter 自身的构建流程改动较少并且较彻底第解决了本地耦合的问题; 解决了组件式开发的痛点,各自开发各自的代码,也不用要求每台电脑上都配置flutter环境
    缺点: 集成方式上变得貌似更加繁琐,Flutter 内容的变动需要先同步到远程仓库再 同步到 Standalone 模式方能生效;且要各自打包维护iOS安卓的两套代码仓库供不同平台去拉取调用,Flutter中的依赖库配置可能存在一些坑

    相关文章

      网友评论

        本文标题:Flutter—原有项目集成Flutter

        本文链接:https://www.haomeiwen.com/subject/qrgjgctx.html