Flutter

iOS项目组件化集成Flutter

2019-09-27  本文已影响0人  哦呵呵y

一、官方方案

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只支持真机,不支持模拟器。

上一篇下一篇

猜你喜欢

热点阅读