美文网首页Flutter
iOS项目组件化集成Flutter

iOS项目组件化集成Flutter

作者: 哦呵呵y | 来源:发表于2019-09-27 13:39 被阅读0次

    一、官方方案

    https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps
    缺点:

    1. 每个人都需要配置Flutter环境;
    2. 不适合组件化项目使用

    二、完全抽离Flutter

    将flutter module编译生成产物生成一个私有pod,其他工程只需要用cocoapods依赖就可以,完全不用关心flutter的内容。

    1. 创建一个私有pod用来存放flutter生成的framework
    2. 创建一个flutter moduleflutter create -t module flutter_module(暂时不明白和flutter create flutter_module有什么实质性区别)
    3. 将flutter module作为私有pod的git子模块
    4. 私有pod根目录添加打包脚本
    # 清除历史版本
    rm -rf ISJFlutterPod/Classes
    mkdir ISJFlutterPod/Classes
    
    # 进入fluttermodule目录
    cd ISJFlutterModule/flutter_module
    
    # clean
    echo "Clean old build"
    flutter clean
    echo "Clean over"
    
    # 更新插件
    echo "开始获取 packages 插件资源"
    flutter packages get
    
    cp ../../Podfile .ios/Podfile
    
    # 构建
    FRAMEWORK_PATH="Debug-iphoneos"
    echo "开始构建 ${1} for ios"
    echo $1
    if [[ $1 = "release" ]]; then
        flutter build ios --release --no-codesign
        FRAMEWORK_PATH="Release-iphoneos"
    else
        flutter build ios --debug --no-codesign
    fi
    echo "构建 ${1} 已完成"
    
    echo "开始 处理framework和资源文件"
    cp -r .ios/Flutter/App.framework ../../ISJFlutterPod/Classes
    cp -r .ios/Flutter/engine/Flutter.framework ../../ISJFlutterPod/Classes
    
    cp -r build/ios/${FRAMEWORK_PATH}/*/*.framework ../../ISJFlutterPod/Classes
    
    1. 更新完flutter module依赖需要重新执行脚本,测试阶段可以直接依赖本地私有pods进行开发

    待优化

    暂时脚本生成的framework只支持真机,不支持模拟器。

    相关文章

      网友评论

        本文标题:iOS项目组件化集成Flutter

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