一、官方方案
https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps
缺点:
- 每个人都需要配置Flutter环境;
- 不适合组件化项目使用
二、完全抽离Flutter
将flutter module编译生成产物生成一个私有pod,其他工程只需要用cocoapods依赖就可以,完全不用关心flutter的内容。
- 创建一个私有pod用来存放flutter生成的framework
- 创建一个flutter module
flutter create -t module flutter_module
(暂时不明白和flutter create flutter_module
有什么实质性区别) - 将flutter module作为私有pod的git子模块
- 私有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
- 更新完flutter module依赖需要重新执行脚本,测试阶段可以直接依赖本地私有pods进行开发
待优化
暂时脚本生成的framework只支持真机,不支持模拟器。
网友评论